POV-Rayのある特定の点から別の点にオブジェクトを移動する回転を見つけることは、驚くほど困難です。POV-Rayでベクトルの周りのオブジェクトを回転させる方法は?
幾何学的には、それを見つけるのは十分に簡単です:私はPointT
(緑)目標点に原点からの距離Dist
を計算し、<Dist, 0, 0>
(青)でPoint0
を作成します。次に、Point0
とPointT
から、それらとそれらの垂線との間の角度を計算します。 AngleD
動き回る= PointT
Point1
からPoint0
による回転。
POV-Rayので、私はPoint1
を計算するvaxis_rotate
を使用することができます。しかし、私は実際にオブジェクトを回転させたい(もちろん球ではありません)、これを行うための明白な方法はありません。私は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}
}
直接回転を指定する唯一の方法はであるように思える[オイラー角(http://www.povray.org/documentation/ビュー/3.6.1/49/)。必要があれば、[明示的な回転行列](https://sites.google.com/site/glennmurray/Home/rotation-matrices-and-formulas/rotation-about-an-arbitrary-axis-in-3)を生成することができます。次元)。 – meowgoesthedog