Java 在两个已知点之外外推一条直线

Java 在两个已知点之外外推一条直线,java,opengl,Java,Opengl,我的数学很烂。不,更好的解释:我不知道如何解释数学符号。我的大脑无法解释它。这就是为什么我来到编程社区寻求帮助,将数学“翻译”成我确实理解的语言 我有两组代表视线的三维空间坐标 Vector1(eyes) x=10 y=10 z=4 Vector2(lookingat) x=10 y=8 z=4.785 我如何计算一个点,该点的双值超出了观察值?例如,在我们正在查看的线之外的2个点是什么?那将是在太空中的什么位置 简而言之: 如何将给定的点外推到由两个向量组成的直线之外,该向量沿直线具有给定的

我的数学很烂。不,更好的解释:我不知道如何解释数学符号。我的大脑无法解释它。这就是为什么我来到编程社区寻求帮助,将数学“翻译”成我确实理解的语言

我有两组代表视线的三维空间坐标

Vector1(eyes) x=10 y=10 z=4
Vector2(lookingat) x=10 y=8 z=4.785
我如何计算一个点,该点的双值超出了观察值?例如,在我们正在查看的线之外的2个点是什么?那将是在太空中的什么位置

简而言之:

如何将给定的点外推到由两个向量组成的直线之外,该向量沿直线具有给定的双值

a known
 \
  \
   \
    b known
     ?    
      ?     + 3
       ?
        c what is this value...
编辑

在@strustmaster的帮助下,我想出了这个奇妙的解决方案。非常感谢:D

private Vec3 calculateLine(Vec3 x1, Vec3 x2, double distance) {
    double length = Math.sqrt(multiply(x2.xCoord - x1.xCoord) + multiply((x2.yCoord - x1.yCoord)) + multiply((x2.zCoord - x1.zCoord)));
    double unitSlopeX = (x2.xCoord-x1.xCoord) / length;
    double unitSlopeY = (x2.yCoord-x1.yCoord) / length;
    double unitSlopeZ = (x2.zCoord-x1.zCoord) / length;
    double x = x1.xCoord + unitSlopeX * distance;
    double y = x1.yCoord + unitSlopeY * distance;
    double z = x1.zCoord + unitSlopeZ * distance;
    return Vec3.createVectorHelper(x, y, x);
}
private double multiply(double one) {
    return one * one;
}

您需要开始查看基本的三维坐标几何图形

在3D中,方程式可以写成:

x = x1 + unitSlopeX * distance
y = y1 + unitSlopeY * distance
z = z1 + unitSlopeZ * distance
。。式中,(x1,y1,z1)可以是直线上的任何点;在这种情况下(10,10,4)

下一组未知数是全部3个单位斜率。要计算它,只需减去两点(这将给你一个向量),然后除以向量的长度

length = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)
unitSlopeX = (x2-x1) / length
unitSlopeY = (y2-y1) / length
unitSlopeZ = (z2-z1) / length
现在,要得到第三个坐标,只需在本文开头的三个方程中插入距离(任意值)


矢量表示法:

V = V1 + t * (V2 - V1) / | V2 - V1 |

。。其中
t
是任意实数。

您需要开始查看基本的三维坐标几何图形

在3D中,方程式可以写成:

x = x1 + unitSlopeX * distance
y = y1 + unitSlopeY * distance
z = z1 + unitSlopeZ * distance
。。式中,(x1,y1,z1)可以是直线上的任何点;在这种情况下(10,10,4)

下一组未知数是全部3个单位斜率。要计算它,只需减去两点(这将给你一个向量),然后除以向量的长度

length = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)
unitSlopeX = (x2-x1) / length
unitSlopeY = (y2-y1) / length
unitSlopeZ = (z2-z1) / length
现在,要得到第三个坐标,只需在本文开头的三个方程中插入距离(任意值)


矢量表示法:

V = V1 + t * (V2 - V1) / | V2 - V1 |

。。其中
t
是任何实数。

谢谢。我只是一个刚开始的3d程序员,之前我所做的只是简单的Intreport,它在web上有更多的例子。外推法有点难倒我,但这将大大帮助我。你知道有没有什么资源可以像你那样解释?用一个“普通”的数学例子?我真的对这些东西很感兴趣来学习它们。我真的很抱歉,但我不知道任何资源。我建议你去读坐标几何的书。也许你可以从2D开始,这个领域的大多数概念可以简单地扩展到3D。例如,上述3个方程称为“三维线的参数方程”,是二维线的简单扩展。你给了我一些东西让我在谷歌上搜索;-)那同样好。在这里,有一个向上投票:DGlad将提供一些帮助!:)谢谢我只是一个刚开始的3d程序员,之前我所做的只是简单的Intreport,它在web上有更多的例子。外推法有点难倒我,但这将大大帮助我。你知道有没有什么资源可以像你那样解释?用一个“普通”的数学例子?我真的对这些东西很感兴趣来学习它们。我真的很抱歉,但我不知道任何资源。我建议你去读坐标几何的书。也许你可以从2D开始,这个领域的大多数概念可以简单地扩展到3D。例如,上述3个方程称为“三维线的参数方程”,是二维线的简单扩展。你给了我一些东西让我在谷歌上搜索;-)那同样好。在这里,有一个向上投票:DGlad将提供一些帮助!:)您需要这个修复:返回Vec3.createVectorHelper(x,y,z);您需要这个修复:返回Vec3.createVectorHelper(x,y,z);