select一个本地原点作为3D中给定三个点的质心

给定三点非共线PQR三维,我需要一个通用的方法来生成x'y'z'单位向量,就像本地坐标系统的原点。

x'和y'vectos应位于由P QR定义的平面上。

我无法弄清楚的部分是:
在计算质心C ,我可以selectx'作为normalize(vec(PQ) + vec(PC))但是不知道如何生成y'z'

该方法应该是通用的。 我知道这是可能的,没有轮换等,但如何?

我将用Java编写一个程序,所以我会一步一步地感谢你的答案。

两个向量的叉积是一个与它们正交的向量。 如果一个平面中包含两个vector,那么它们的叉积会给出与该平面垂直的vector。 知道这一点,你可以通过利用这个属性来构建你想要的坐标系。

让我们开始find定义你的飞机的两个向量。 例如,PQ和PR。 我们已经可以将其中的一个作为你的x'向量,但是这个平面内的任何向量都是正确的。 你想它正常化:

 x' = normalize( PQ ) 

正如我所说,这些向量的叉积给你一个正常的表面。 如果我们规范化它,我们可以称之为z'

 z' = normalize( PQ x PR ) 

缺失的vector与另外两个正交,我假设你想定义一个正交坐标系。 而且因为它们都已经是1的长度了,所以不需要标准化它:

 y' = x' xz' 

这将为您提供与标准匹配的所有可能的坐标系之一:包含在平面中的正交性,单位长度,x'和y'和垂直于该平面的z'。

(注意:我使用“x”来表示两个向量的叉积,而“x”来命名这个练习中的一个向量,我希望不要太困惑)