Math 计算位于三维平面上的向量

Math 计算位于三维平面上的向量,math,3d,Math,3d,我有一个由两个3D向量定义的3D平面: P=位于平面上的点 N=平面的曲面法线 我想计算平面上的任何向量。取任何向量,v,不平行于N,它与N的向量叉积(w1=vxn)是平行于平面的向量 也可以取w2=v-N(v.N)/(N.N),这是v到平面的投影 平面上的一个点可以用x=p+aw表示,事实上,平面上的所有点都可以表示为 x=P+a w2+b(w2 x N) 只要w2的v是“合适的”。。记不起确切的情况,懒得去计算;) 如果要确定点是否位于平面中,而不是在平面中查找点,可以使用 x、 N=p

我有一个由两个3D向量定义的3D平面:

  • P=位于平面上的点
  • N=平面的曲面法线

我想计算平面上的任何向量。取任何向量,v,不平行于N,它与N的向量叉积(w1=vxn)是平行于平面的向量

也可以取w2=v-N(v.N)/(N.N),这是v到平面的投影

平面上的一个点可以用x=p+aw表示,事实上,平面上的所有点都可以表示为 x=P+a w2+b(w2 x N) 只要w2的v是“合适的”。。记不起确切的情况,懒得去计算;)

如果要确定点是否位于平面中,而不是在平面中查找点,可以使用

x、 N=p.N

对于平面中的所有x。

如果N=(xn,yn,zn)和p=(xp,yp,zp),则平面方程由下式给出:

(x-xp,y-yp,z-zp)*(xn,yn,zn)=0

其中(x,y,z)是平面的任意点,*表示内积

我想计算任何向量 那在飞机上

如果我理解正确,您需要检查点是否属于平面

你必须检查这个等式:nx(x− x0)+ny(y− y0)+nz(z)− z0)=0对你的观点是正确的

式中:[nx,ny,nz]是法向量,[x0,y0,z0]是给定点,[x,y,z]是要检查的点

//编辑
现在我明白你的问题了。需要两个线性独立的向量,它们是基本平面。所以你们需要休耕迈克尔·安德森的回答者,但你们必须添加第二个向量,并使用这些向量的组合。更多信息:

我不想检查点是否在平面上,我只想生成平面上存在的任何点。这将是“很多”点;)是的,但我不能只是开始插入值和测试。这非常接近我想要的。但不完全是这样,看看我要找的东西会给我一个向量,每次都在同一个平面上。我不关心向量在平面上的方向,只是生成的向量确实位于同一平面上。目前,结果向量所在的平面取决于V的值(叉积的非平行向量),除非我误解了你。是的,你需要第二个向量来生成平面。现在你只有一条属于这个平面的线,要得到这个平面上的所有点,你需要两个独立的向量,平行于这个平面。对于几乎任何v,第一个可以是w1=VxN。由于叉积的性质,w1平行于平面,因为它垂直于法线N。第二个向量是w2=w1 x N,即perp。由于叉积的性质,将其转化为N。这也是罪犯。到w1,因此与w1线性无关。因为我们有两个向量PAR。对于平面x=P+a w1+b w2给出了平面上的所有点,因为我们改变了a和b。为了简洁起见,我省略了一些关于选择v的微妙问题。类似于我上面的评论,你也可以将w1和w2取为w1=I-N(I.N)/(N.N)和w2=j-N(I.N)/(N.N),其中I和j是x和y方向上的单位向量。w1和w2都是平面,因为w1.N=i.N-N.N(i.N)/(N.N)=0和w2.N=j.N-N.N(j.N)/(N.N)=0(如果其中一个向量为零,则可以用k.N-N.N(k.N)/(N.N)替换它)然后平面由x=P+a w1+b w2给出,改变a和b将得到平面中的所有点。这基本上就是第二个版本所做的,用随机向量替换i和j。它所避免的只是将P加上和减去几次——这会导致稍微整洁的数学。属于数学溢出。与编程无关。我在这里没有看到关于在编程中使用数学的问题有任何错误。对,这实际上是我正在研究的一个编程问题。还有,我不知道数学溢出,很酷!mathoverflow是同一个人吗?这个问题似乎离题了,因为它是关于数学的,而不是关于编程的。尝试