我发现在 POV-Ray 中很难找到将对象从一个给定点移动到另一个给定点的旋转。
几何上很容易找到:我计算Dist
从原点到目标点的距离PointT
(绿色),并Point0
在<Dist, 0, 0>
(蓝色)处创建。然后我计算它们之间的角度Point0
和PointT
垂直于它们的角度。AngleD
around的旋转Perp
移动Point0
到Point1
= PointT
。
在 POV-Ray 中,我可以vaxis_rotate
用来计算Point1
. 但我想实际旋转一个对象(当然,它不会是一个球体),而且我没有看到一个明显的方法来做到这一点。我试过rotate -AngleD*Perp
了,但结果略有不同(红色)。
我怎么能对一个对象做什么vaxis_rotate
,对一个点有什么作用?
#declare PointT = <2, 2, 2>;
#declare Dist = VDist(<0, 0, 0>, PointT);
#declare Point0 = <Dist, 0, 0>;
#declare AngleD = VAngleD(PointT, Point0);
#declare Perp = VPerp_To_Plane(PointT, Point0);
#declare Point1 = vaxis_rotate(Point0, Perp, -AngleD);
sphere{Point0, R pigment{color Blue} }
sphere{Point1, R pigment{color Green} }
sphere{
Point0, R
rotate -AngleD*Perp
pigment{color Red}
}