Vector 指向指定平面中三维向量的左侧或右侧?

Vector 指向指定平面中三维向量的左侧或右侧?,vector,3d,geometry,Vector,3d,Geometry,我不确定以前是否有人问过这样的问题,但我搜索了一下,没有找到我要找的东西 我知道如何确定点是在二维线的左侧还是右侧。但假设我们有一个三维向量。当然,一个3D向量会通过无限平面,但是假设我们选择了其中一个我们感兴趣的平面,我们在这个平面上有一个特定的点,我们想知道它是在左边还是右边,还是在我们的向量上(相对于所选的平面)。如何做到这一点?您应该明确定义该平面的方向-例如,定义主(正向)法线N-就像OZ轴是OXY平面的法线一样 如果你有一个A,B,C三角形,并声称它是逆时针方向的,你可以计算前向平面

我不确定以前是否有人问过这样的问题,但我搜索了一下,没有找到我要找的东西


我知道如何确定点是在二维线的左侧还是右侧。但假设我们有一个三维向量。当然,一个3D向量会通过无限平面,但是假设我们选择了其中一个我们感兴趣的平面,我们在这个平面上有一个特定的点,我们想知道它是在左边还是右边,还是在我们的向量上(相对于所选的平面)。如何做到这一点?

您应该明确定义该平面的方向-例如,定义主(正向)法线
N
-就像
OZ
轴是
OXY
平面的法线一样

如果你有一个A,B,C三角形,并声称它是逆时针方向的,你可以计算前向平面法线为
N=AB x BC

对于给定平面中的点
A、B、D
,计算(AB和
AD
的向量积,然后是结果和
N
的标量积)


该值的符号为正,如果向量
AB,AD,N
形式
右手
三元组且D位于AB方向的左侧

一个直观的解决方案是为平面定义一个坐标系,如下所示。让我们标准化你问题中的3d向量,并将得到的单位向量称为
v
,让
x
成为平面上的一个点,我们将其单位法线表示为
n
。现在,您可以选择以
x
为中心的坐标系,该坐标系由三个
3*1
单位向量
v
n
b=v.crossProduct(n)
构成

这个想法是,如果你在这个坐标系中表示一个点,那么如果它的
b
坐标是负数,你可以说它在左边。因此,如果它的
b
坐标为正,它将位于右侧

显然,如果在这个坐标系中有一个点
q
,可以使用

  q_w=R*q+x
其中旋转矩阵R为矩阵,其列为平面坐标系的单位轴:

  R=[v n b]

因此,如果在世界坐标中有一个点
Q
,使用上述关系的倒数,计算
转置(R)*(Q-x)
,并查看
b
坐标是正坐标还是负坐标

没有反馈,StackOverflow无法工作。您没有讨论所有主题,也没有接受答案。@MBo非常感谢您这么说。我也注意到在OP的历史中。是我还是没人再讨论什么?在过去的几天里,我已经写了10个冗长而详细的答案,但似乎没有人在意。他们不仅不会投票/接受,即使答案显然已经解决了他们的问题,而且如果他们回答(大如果),他们会像你欠他们什么一样跟你说话。我受够了。无论如何,回答得不错。我不应该像那些惹我生气的人那样,所以这是我的一票。一篇专栏文章,为了****的缘故给出一些反馈。对不起,伙计们,如果你们感到恼火,当回答我问题的东西不完全在我问题的答案中时,我会离开社区去选择他们认为最好的答案,也许我错了,我会从现在开始给出我的反馈。关于这个问题,我总结了一种解决我的问题的方法,即:让直线为AB,点为C,首先求叉积AB×AC,结果为向量V=(x,y,z)。如果x,y,z都是0,则点在直线上,否则x,y,z的符号分别代表C的方向,在下一个注释中继续。@MohamedELTair在你们所有的历史中,大多数答案都准确地回答了这个问题。我还认为,目前的问题也是如此。你的行为给人的印象是,如果答案需要一点努力,你就是看不懂。@MohamedELTair这正是我所说的:你说“你没有把它简化得足够”。那么,请让我这样做吧!我很乐意解释(其他用户也一样),我们都会学到一些东西。反馈不仅仅是赞成票/反对票,而是对我说我错了,就这个话题进行对话,让答案不断发展。不过,感谢你最终给出反馈:)
  R=[v n b]