java3d获取模型在xoy平面的投影,如何将点投影到3D平面上?

该答案是对两个现有答案的补充。我的目的是展示@tmpearce和@bobobobo的解释是如何归结为同一件事的,同时又为那些仅对复制适合自己情况的方程式感兴趣的人提供快速解答。

法线n和点o定义的平面的方法

@tmpearce在答案中解释了此方法。

给定一个平面的点法线定义,该平面的法线为n且平面上的点为o,则点p'(即平面上最接近给定点p的点)可以通过以下公式找到:

1)p'= p-(n⋅(p-o))* n

法线n和标量d定义的平面的方法

@bobobobo在答案中解释了此方法。

给定一个由法线n和标量d定义的平面,可以通过以下方法找到一个点p',即最接近给定点p的平面上的点:

2)p'= p-(n⋅p + d)* n

相反,如果您有一个平面的点法线定义(该平面由法线n和平面上的点o定义),@ bobobobo建议找到d:

3)d = -n⋅o

并将其插入等式2。这将产生:

4)p'= p-(n⋅p-n⋅o)* n

关于差异的注释

仔细研究方程式1和4。通过比较它们,您会发现方程式1使用n⋅(p-o),方程式2使用n⋅p-n⋅o。 实际上,这是写下同一件事的两种方式:

5)n⋅(p-o)= n⋅p-n⋅o = n⋅p + d

因此,可以选择将标量d解释为好像是“预计算”。 我将说明:如果已知平面的n和o,但是o仅用于计算n⋅(p-o),我们也可以用n和d定义平面,然后计算n⋅p + d,因为我们已经看到那是同一回事。

此外,使用d进行编程有两个优点:

现在找到p'是一个更简单的计算,尤其是对于计算机而言。 相比:使用n和o:3个减法+ 3个乘法+ 2个加法

使用n和d:0减+ 3乘+ 3加。

使用d将平面的定义限制为仅4个实数(对于n而言,3为3 +对于d为1),而不是6(对于n为3,对于n + 3对于o)。 这样可以节省内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值