POV-Ray でオブジェクトをある点から別の点に移動させる回転を見つけるのは驚くほど難しいと思います。
幾何学的に見つけるのは簡単です。Dist
原点からターゲット ポイントPointT
(緑) までの距離を計算し、(青) で作成Point0
します<Dist, 0, 0>
。Point0
次に、それらの間の角度とPointT
それらへの垂線を計算します。AngleD
周りの回転は=に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}
}