Java 决定是否;直线与二维平面相交的位置(在三维空间中)

Java 决定是否;直线与二维平面相交的位置(在三维空间中),java,Java,以下是我过去最喜欢的一个问题:游戏开发 问题: 我们在三维空间。我试图确定,在所说的空间中,两个向量之间的一条线是否穿过一个圆;后者包括:中心向量、半径、偏航和俯仰 为了确定这一点,我的目标是将圆转换成一个平面,这个平面可以是无限的,也可以只有圆的所有边的直径 如果两个向量之间的线实际上通过了那个平面,我剩下的任务就是确定交点是否在圆的半径范围内,在这种情况下,我可以返回true或false 什么已经起作用了: 我已经建立了我的圈子,总的框架就在那里。这些圆在3D空间中的显示/渲染完全符合规

以下是我过去最喜欢的一个问题:游戏开发


问题: 我们在三维空间。我试图确定,在所说的空间中,两个向量之间的一条线是否穿过一个圆;后者包括:中心向量、半径、偏航和俯仰

为了确定这一点,我的目标是将圆转换成一个平面,这个平面可以是无限的,也可以只有圆的所有边的直径

如果两个向量之间的线实际上通过了那个平面,我剩下的任务就是确定交点是否在圆的半径范围内,在这种情况下,我可以返回true或false


什么已经起作用了: 我已经建立了我的圈子,总的框架就在那里。这些圆在3D空间中的显示/渲染完全符合规定,太棒了


已尝试的内容: 复制了一些github gist代码,并试图让它们为我的目的工作。我有点工作,至少有时候是这样。不幸的是,由于代码编写的性质,我不知道它在做什么,只是放弃了所有这些。 对这个话题也做了很多研究。但由于我不太理解人们在谈论直线/平面交叉点时所说的语言,我本可以在不认识它的情况下阅读答案


问题: 我被困在交叉路口。不知道该去哪里,也不知道它在逻辑上是如何工作的!那么,我将从这里走向何方?人们如何理解这一切


注意:
我确实将这个问题标记为“java”,但我不是在寻找填鸭式的代码。这是一个合乎逻辑的问题,我正试图克服它。如果解释得足够好的话,我会让代码通过反复试验来工作

假设您的圆是XY平面上的圆,其中心位于(0,0,0),半径为1。你将如何解决这个问题? 当Z等于零时,您将检查X和Y的值。如果直线通过圆,X平方加Y平方将小于1(半径平方)


换句话说,可以将三维坐标转换为更简单的参照系。所以我认为你需要学习三维坐标的转换,这其实并不难。您需要旋转三维空间,直到中心向量只有一个Z分量,且偏航和俯仰为零。然后偏移坐标,使圆心位于(0,0,0)中。然后对该行应用相同的变换。最后可以按半径进行缩放,但老实说,这并不重要,因为圆的数学很简单。

我怀疑你会在堆栈交换中得到更好的答案。我不知道那个地方是个东西,我把它转发到了那里。谢谢你的提示