Math 用一个方程三角化坐标

Math 用一个方程三角化坐标,math,equation,equation-solving,Math,Equation,Equation Solving,好的,我知道这听起来很愚蠢,但它与编程有关 我正在做一个游戏,我正在考虑实现一个系统,允许用户对他们的3D坐标进行三角测量以定位某物(例如任务)。 我还希望能够让用户使他们用于三角测量的点的坐标具有用户确定的坐标(因此位置的坐标是相对的,可能通过设置信标或其他方式) 我有一个计算点之间距离的方法,因此基本上我可以计算三角形/棱锥体的边的长度,以及除了我要的坐标之外的所有长度。 我已经很久没有做过任何三角函数了,我对sin、cos和tan函数已经生疏了,我觉得它们是必需的,但不知道如何实现它们 有

好的,我知道这听起来很愚蠢,但它与编程有关

我正在做一个游戏,我正在考虑实现一个系统,允许用户对他们的3D坐标进行三角测量以定位某物(例如任务)。 我还希望能够让用户使他们用于三角测量的点的坐标具有用户确定的坐标(因此位置的坐标是相对的,可能通过设置信标或其他方式)

我有一个计算点之间距离的方法,因此基本上我可以计算三角形/棱锥体的边的长度,以及除了我要的坐标之外的所有长度。 我已经很久没有做过任何三角函数了,我对sin、cos和tan函数已经生疏了,我觉得它们是必需的,但不知道如何实现它们

有谁能给我一个示范,告诉我如何用数学/编程的方式来做这件事

额外信息: 我的函数返回两个点之间的精确距离,因此假设您将两个点分别设置为0,0,0和4,4,0,并且这些点设置为缩放(游戏世界被划分为一个非常大的3d网格,每个“块”区域由3d坐标表示),然后它将返回一个约为5.6的值

关于它的关键点是用户可以设置点,所以假设他们设置一个点来读取0,0,0,实际位置可能是52,85,93。但是,如果他们随后对块进行计数并正确设置其其他点(例如,在实点56、89、93处设置点4、4、0),则最终结果将返回相对位置(例如,他们试图定位的对象位于实点152、185、93处,它将返回相对值100100、0)。我需要能够计算它,知道每个点,但它试图定位的那个点,以及所有点之间的距离

另外,请不要问我为什么不能用实际坐标来计算,我希望在计算结果时能在屏幕上显示这个方程

例如: 这是一张图表

想象一下,这些都是我在平坦平原上的游戏点数。 我想知道f点。 我知道d点和e点以及A、B和C边的值

仅使用我知道的数据,我需要找出如何做到这一点

答复编辑:

经过几天的研究,肖恩·肯尼为我提供了他的时间、耐心和智慧,因此我现在得到了一个三角测量方法的工作实现


我希望在测试代码时放置代码的不同语言等价物,以便未来的编码人员可以使用此代码,而不会出现与我相同的问题。

如果您有来自原点的位移,无论这是否是另一个用户定义的坐标,该三维点的坐标都只是
(x,y,z)

如果从一个点定义这些长度,该点也需要考虑坐标,则只需编写
(x,y,z)+(x1,y1,z1)=(x2,y2,z2)
,其中x2,y2和z2是从
(0,0,0)
原点的位移

如果您希望找到该向量的长度,即如果您将A到B的直线定义为x轴,那么x位移是多少,您可以使用毕达哥拉斯来计算3D向量,其工作原理与2D相同:

Length l = sqrt((x^2) + (y^2) + (z^2))
编辑: 假设您有一个用户定义的点a(x1,y1,z1),并且希望将其定义为原点(0,0,0)。您有另一个用户选择的点B(x2、y2、z2),您知道x、y和z平面上从A到B的距离。如果你想知道这一点是什么,关于新的原点,你可以简单地做

B relative to A = (x2, y2, z2) - (x1, y1, z1) = (x2-x1, y2-y1, z2-z1) = C
C是向量A>B,向量是一个量,它有一个大小(线的长度)和一个方向(从A到B的角度)

如果要计算B相对于原点O的位置,可以执行相反的操作:

 B relative to O = (x2, y2, z2) + (x1, y1, z1) = (x1+x2, y1+y2, z1+z2) = D
D是向量O>B

编辑2:

//pseudo code
userx = x;
usery = y;
userz = z; 
//move origin
for (every block i){
 xi = xi-x;
 yi = yi - y;
 zi = zi -z;
}

如果原点的位移,无论这是否是另一个用户定义的坐标,该三维点的坐标都只是
(x、y、z)

如果从一个点定义这些长度,该点也需要考虑坐标,则只需编写
(x,y,z)+(x1,y1,z1)=(x2,y2,z2)
,其中x2,y2和z2是从
(0,0,0)
原点的位移

如果您希望找到该向量的长度,即如果您将A到B的直线定义为x轴,那么x位移是多少,您可以使用毕达哥拉斯来计算3D向量,其工作原理与2D相同:

Length l = sqrt((x^2) + (y^2) + (z^2))
编辑: 假设您有一个用户定义的点a(x1,y1,z1),并且希望将其定义为原点(0,0,0)。您有另一个用户选择的点B(x2、y2、z2),您知道x、y和z平面上从A到B的距离。如果你想知道这一点是什么,关于新的原点,你可以简单地做

B relative to A = (x2, y2, z2) - (x1, y1, z1) = (x2-x1, y2-y1, z2-z1) = C
C是向量A>B,向量是一个量,它有一个大小(线的长度)和一个方向(从A到B的角度)

如果要计算B相对于原点O的位置,可以执行相反的操作:

 B relative to O = (x2, y2, z2) + (x1, y1, z1) = (x1+x2, y1+y2, z1+z2) = D
D是向量O>B

编辑2:

//pseudo code
userx = x;
usery = y;
userz = z; 
//move origin
for (every block i){
 xi = xi-x;
 yi = yi - y;
 zi = zi -z;
}

我花了一点时间研究一个解决方案,但我认为实现者,即您,应该知道它在做什么,所以遇到的任何错误都可以在以后处理。因此,我将以强烈暗示的形式给出我的答案

首先,我们有一个从D到E的向量,我们可以解出来:如果我们把坐标看成是位置矢量而不是绝对坐标,我们如何确定从D到E的矢量是什么?想一想,如果你只知道你从哪里开始,到哪里结束,你将如何确定你移动的位移?位移是一条直线,点a到B,没有偏差,不是:I h