- ベストアンサー
XY座標系における回転テーブルと円板の関係についての解答方法
- XY座標系にて原点を中心に回転するテーブルがあり、そのテーブルに円板を乗せる場合、円板の円周上の任意の2点を結ぶ直線と円板中心・Y軸上の固定点を結ぶ直線が直交するためには、テーブルを何度回転させればよいかを求める方法についての質問です。
- 質問者は、円板がテーブルに置かれた際の座標系の定義と、回転した場合の座標変換式を示し、上記の関係式にθを代入して解こうとしていますが、途中で行き詰まっているようです。
- 質問者は、θ=???の形にすることができるのか、または別の方法で解を求める必要があるのかを知りたいとしています。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#2,#3です。 一般化した場合では、抽象的で分かりづらいので、A#2の計算を具体例でやってみます。そうすれば分かりやすいでしょう。 本当は、一般論を扱う場合はその式や式から導いた計算結果が正しいかを、自分で具体例を作って、実際に計算しそれをプロットして、正しい計算結果が得られていることを確認する習慣を身に着けたいですね。 例) 円板の半径r=2 回転テーブル中心:(0,0) 円板がテーブルに置かれたときの中心:(X0,Y0)=(0.1,-0.1) Y軸上の固定点:(X1,Y1)=(0,-4) 円板がテーブルに置かれたときの円周上の任意の2点: (X2,Y2)=(1.7,1.1), (X3,Y3)=(0.3,1.807878403) として、A#2のzの2次方程式を解いて(Sinθ,Cosθ)を求めると (Sinθ,Cosθ)=(0.5489751731,0.8358386563),(-.6058630451,-0.7955689603) と2通り出てきます。 Sinθだけだと余分な(単位円の)第二象限と第四象限の角度が出てきますので、Cosθも求めておくとそれらを除外できます。 これらの2組の(Sinθ,Cosθ)からθ=θ1,θ2を求めると θ1=33.30°,θ2= 217.29°が得られます。 θ1=33.30°に対する回転後の各座標点は (X'2,Y'2)=(0.8170530253,1.852680316), (X'3,y'3)=(-1.4073932998,1.895377276), (X'0,Y'0)=(0.1384813829,-0.02868634832) また θ2= 217.29°に対する回転後の各座標点は (X'2,Y'2)=(-0.6860178828,-1.905093033), (X'3,Y'3)=(0.5384284423,-1.862396073), (X'0,Y'0)=(-0.1401432005,0.01897059151) これらを図にプロットして添付しておきますので参考にして下さい。 移動前の座標を与えれば、回転角θや移動後の座標を求めるプログラムを作っておけば、わざわざ一般化した場合のθや各座標の式を長々と書く必要がないと思います。
その他の回答 (7)
(Y3*Cosθ+X3*Sinθ)-(Y2*Cosθ+X2*Sinθ) =(Y3*Cosθ-Y2*Cosθ)+(X3*Sinθ-X2*Sinθ) =y32*Cosθ+x32*Sinθ=z32sin(θ+α)、 ここで、z32=√(x32^2+y32^2)、α=arctan(y32/x32) ここまではいいですね。 この結果で、tanα=sinα/cosα=y32/x32、が示されたので (X3*Cosθ-Y3*Sinθ)-(X2*Cosθ-Y2*Sinθ) =-y32*sinθ+x32*cosθ =z32・《(-y32/z32)*sinθ+(x32/z32)*cosθ》 =-z32・《(y32/z32)*sinθ-(x32/z32)*cosθ》 =-z32・《cos{(π/2)-α}*sinθ-sin{(π/2)-α}*cosθ》 =-z32・《sin[θ-{(π/2)-α}]》 =-z32・cos(θ+α) しかし、(y32/z32)、(x32/z32)にsinα、cosαを入れれば ダイレクトに -z32・(sinα*sinθ-cosα*cosθ)=-z32cos(θ+α) が導けますね。 ここでは、こういった式の変形の繰り返しで答が出せます。
お礼
丁寧な説明有難うございました。 なんとか理解することができました。
この辺を詳しく書きましょう。 sin[θ-{(π/2)-α}]=sin[-{(π/2)-(θ+α)}]、ですね。 sin[-{(π/2)-(θ+α)}]=-sin[{(π/2)-(θ+α)]=-cos(θ+α)、 これに、z32が掛かるのです。
補足
回答有難うございます。 たびたびすいません。 最終的に-cos(θ+α)の部分は理解することができましたが、根本的な問題として、 -y32*sinθ+x32*cosθ=z32sin[θ-{(π/2)-α}] が分かりません。 何度も申し訳けありませんが、ご教示よろしくお願いします。
「このようになるのは、上に示したのと同じ理由。」 以降の部分を再計算して記す。 これから {z00sin(θ+β)-Y1}/{-z00cos(θ+β)-X1}=cos(θ+α)/sin(θ+α) {-z00cos(θ+β)-X1}・cos(θ+α)={z00sin(θ+β)-Y1}・sin(θ+α) *ここから再計算。 z00{sin(θ+β)・sin(θ+α)+cos(θ+β)・cos(θ+α)} =Y1・sin(θ+α)-X1・cos(θ+α) =z11・sin(θ+α-γ) ここで、z11=√(X1^2+Y1^2)、γ=arctan(X1/Y1) 左辺=z00・cos{(θ+α)-(θ+β)}=z00・cos(α-β) 右辺=z11・sin(θ+α-γ) ∴ z00・cos(α-β)-z11・sin(θ+α-γ)=0 {(α-β)+(θ+α-γ)}/2=φ {(α-β)-(θ+α-γ)}/2=ψ とおくと z00・cos(φ+ψ)-z11・sin(φ-ψ)=0 z00・(cosφ・cosψ-sinφ・sinψ)-z11・(sinφ・cosψ-cosφ・sinψ)=0 cosψ(z00・cosφ-z11・sinφ)-sinψ(z00・sinφ-z11・cosφ)=0 cosψ・sin(φ-Δ)-sinψ・cos(φ-Δ)=0 ただし、Δ=arctan(z00/z11) sin(ψ-φ+Δ)=0 ∴ ψ-φ+Δ=nπ、(nは任意の整数) φ={(α-β)+(θ+α-γ)}/2=α+(-β+θ-γ)/2 ψ={(α-β)-(θ+α-γ)}/2=(-β-θ+γ)/2 ψ-φ={(-β-θ+γ)/2}-{α+(-β+θ-γ)/2}=γ-α-θ ∴ γ-α-θ+Δ=nπ θ=γ-α+Δ-nπ、 nは任意の整数なので、-nを+nに置き換えると、 θ=nπ+γ-α+Δ =nπ+arctan(X1/Y1)-arctan(y32/x32)+arctan(z00/z11) 結局 θ=nπ+arctan(X1/Y1)-arctan{(Y3-Y2)/(X3-X2)} +arctan{√(X0^2+Y0^2)/√(X1^2+Y1^2)}
補足
回答有難うございます。 こちらの回答の方で追加質問させてください。 式の過程を確認しているのですが、 (X3*Cosθ-Y3*Sinθ)-(X2*Cosθ-Y2*Sinθ) =-y32*sinθ+x32*cosθ=z32sin[θ-{(π/2)-α}] =-z32sin[{(π/2)-α}-θ]=-z32cos(θ+α) (∵ α=arctan(y32/x32)=(π/2)-arctan(x32/y32)) の式で -y32*sinθ+x32*cosθ=z32sin[θ-{(π/2)-α}] =-z32sin[{(π/2)-α}-θ]=-z32cos(θ+α) となるのは何故なのでしょうか? お手数お掛けしますが、ご教示お願いします。
(Y3*Cosθ+X3*Sinθ)-(Y2*Cosθ+X2*Sinθ) =(Y3*Cosθ-Y2*Cosθ)+(X3*Sinθ-X2*Sinθ) =y32*Cosθ+x32*Sinθ=z32sin(θ+α)、 ここで、z32=√(x32^2+y32^2)、α=arctan(y32/x32) (X3*Cosθ-Y3*Sinθ)-(X2*Cosθ-Y2*Sinθ) =-y32*sinθ+x32*cosθ=z32sin[θ-{(π/2)-α}] =-z32sin[{(π/2)-α}-θ]=-z32cos(θ+α) (∵ α=arctan(y32/x32)=(π/2)-arctan(x32/y32)) ∴ -1*(X'3-X'2)/(Y'3-Y'2)=-1*{-cos(θ+α)}/sin(θ+α) =cos(θ+α)/sin(θ+α) (Y'0-Y1)/(X'0-X1) ={(Y0*Cosθ+X0*Sinθ)-Y1}/{(X0*Cosθ-Y0*Sinθ)-X1} {z00sin(θ+β)-Y1}/{-z00cos(θ+β)-X1} ここで、z00=√(X0^2+Y0^2)、β=arctan(Y0/X0) β=arctan(Y0/X0)=(π/2)-arctan(X0/Y0)なので このようになるのは、上に示したのと同じ理由。 これから {z00sin(θ+β)-Y1}/{-z00cos(θ+β)-X1}=cos(θ+α)/sin(θ+α) {-z00cos(θ+β)-X1}・cos(θ+α)={z00sin(θ+β)-Y1}・sin(θ+α) z00{sin(θ+β)・sin(θ+α)-cos(θ+β)・cos(θ+α)} =Y1・sin(θ+α)-X1・cos(θ+α) =z11・sin(θ+α-γ) ここで、z11=√(X1^2+Y1^2)、γ=arctan(X1/Y1) 左辺=-z00・cos(2θ+α+β) 右辺=z11・sin(θ+α-γ) ∴ z00・cos(2θ+α+β)+z11・sin(θ+α-γ)=0 {(2θ+α+β)+(θ+α-γ)}/2=φ {(2θ+α+β)-(θ+α-γ)}/2=ψ とおくと z00・cos(φ+ψ)+z11・sin(φ-ψ)=0 z00・(cosφ・cosψ-sinφ・sinψ)+z11・(sinφ・cosψ-cosφ・sinψ)=0 cosψ(z00・cosφ+z11・sinφ)-sinψ(z00・sinφ+z11・cosφ)=0 cosψ・sin(φ+Δ)+sinψ・cos(φ+Δ)=0 ただし、Δ=arctan(z00/z11) sin(ψ+φ+Δ)=0 ∴ ψ+φ+Δ=nπ Δ=arctan(z00/z11)=arctan{√(X0^2+Y0^2)/√(X1^2+Y1^2)} φ=(3/2)θ+α+{(β-γ)/2} =(3/2)θ+arctan{(Y3-Y2)/(X3-X2)}+[{arctan(Y0/X0)-arctan(X1/Y1)}/2] ψ=(θ+β+γ)/2 ={θ+arctan(Y0/X0)+arctan(X1/Y1)}/2 (3/2)θ+arctan{(Y3-Y2)/(X3-X2)}+[{arctan(Y0/X0)-arctan(X1/Y1)}/2] +{θ+arctan(Y0/X0)+arctan(X1/Y1)}/2 +arctan{√(X0^2+Y0^2)/√(X1^2+Y1^2)}=nπ ∴θ=《nπ-[arctan{√(X0^2+Y0^2)/√(X1^2+Y1^2)}] -{arctan(Y0/X0)+arctan(X1/Y1)}/2 -[{arctan(Y0/X0)-arctan(X1/Y1)}/2] -arctan{(Y3-Y2)/(X3-X2)}》/2 検算してください。
- info22
- ベストアンサー率55% (2225/4034)
#2です。 A#2の補足の質問の回答 A#2の回答をちゃんと読んで理解して見えるなら、 >その解を下記式に代入し、最適な解を採用すれば良いということでしょうか? こういう(的外れな)質問はされないはずです。 A#2の回答を読み直して見てください。zの2つの一方がSinθになります。 そこからθを決めるだけの問題です。 >Sinθを求める部分でなぜそうなるのかについても説明頂けると助かります。 単にA#2に書いた条件式のもとで、円板上の点の座標の移動の式と直交条件式をSinθ=zと置いて、連立にして導いたのがzの2次方程式です。Sinθ=zから移動後の座標を与える式も導出できます(物凄く長い式になります)。 おそらく、手計算では(未知数が多いので)長大な式の連立方程式を解く計算になるため、数式処理ソフトを使ってパソコン等で連立方程式を解まないと無理かと思います。A#2のSinθを求めるzの2次方程式の導出も数式処理ソフトMaple10を使って行いました(数式処理ソフトでも複雑な連立方程式も工夫しないと解いてくれませんね)。 #1さんの方法や私の解法も、連立方程式を手計算だけで解くのは難しいですね。一般化しすぎて、手計算(筆算)にしては未知数が多すぎること(途中式が非常に長い式になる)や三角関数の未知数が入っていることで計算を困難にします。 なので、具体的な座標点を与えて、そこからSinθを求め、さらにθを求める方が、途中式が非常に短くなって、計算がはるかに簡単になるかと思います。一般化するのは良いですがそのために計算できなくなっては、一般化の意味はありません。
お礼
丁寧な回答及びアドバイス有難うございました。 挫折気味だったのですが、なんとか続けられそうです。 まだ十分に理解できていない部分もあるので、まずは理解するようにします。
- info22
- ベストアンサー率55% (2225/4034)
>上記式に各々を代入しθについて解こうとしていますが θについて解く途中で行き詰ってしまいます。 一般化しすぎて変数が多すぎます。 円板の半径r(>0), 1回転中2回直交するので問題を簡単にする為 0≦θ<πの方だけと制限する(問題が解決すればπ≦θ<2πも考えれば良い)。 (X1,Y1)≠(X0,Y0)≠(X2,Y2),(X0,Y0)≠(X3,Y3)などの条件が付きます。 (X'0,Y'0)=(X0*Cosθ-Y0*Sinθ,Y0*Cosθ+X0*Sinθ) (X'2,Y'2)=(X2*Cosθ-Y2*Sinθ,Y2*Cosθ+X2*Sinθ) (X'3,Y'3)=(X3*Cosθ-Y3*Sinθ,Y3*Cosθ+X3*Sinθ) (Y'0-Y1)/(X'0-X1)=-1*(X'3-X'2)/(Y'3-Y'2) Sinθは次のzの2次方程式の解として求められます。 (以下の式のx,yは大文字で置き換えて下さい。) (x1^2 y3^2+x1^2 y2^2+y1^2 x2^2-2 x1^2 y2 y3-2 y1^2 x3 x2 -2 y1^2 y3 y2-2 x1^2 x3 x2+y1^2 x3^2+y1^2 y3^2+y1^2 y2^2 +x1^2 x3^2+x1^2 x2^2) z^2 +(-2 y1 x3 y0 y3+2 y1 x3 y0 y2+4 y1 x3 x0 x2-2 x1 y2 x0 x3 +2 x1 y2^2 y0+2 x1 y3^2 y0+2 x1 y3 x0 x3-2 y1 x3^2 x0 -2 y1 x2 y0 y2-2 y1 x2^2 x0-4 x1 y2 y0 y3 +2 y1 x2 y0 y3-2 x1 y3 x0 x2+2 x1 y2 x0 x2) z -2 y0^2 y3 y2+x0^2 x3^2+x0^2 x2^2+y0^2 y3^2 +2 x0 x3 y0 y3-2 x0 x3 y0 y2-2 x0 x2 y0 y3 +2 x0 x2 y0 y2-2 y1 y3 x1 x3+2 y1 y3 x1 x2 +2 y1 y2 x1 x3-2 y1 y2 x1 x2+2 y1^2 y3 y2 +2 x1^2 x3 x2-y1^2 y3^2-y1^2 y2^2-x1^2 x3^2 +y0^2 y2^2-2 x0^2 x3 x2-x1^2 x2^2 = 0 2次方程式の解の公式を使えば Sinθが解けます。 なお、Cosθは上で求めたSinθを使って次式で与えられます。θを求める時に不適なθを除外するのに使えますが、一般化の文字が多くて事実上役立たない可能性が大でしょう。Sin^2θ+Cos^2θ=1の関係では絞り込めません。 Cosθ={Sinθ(x1(y2-y3)+y1(x3-x2))+x0(x2-x3)+y0(y2-y3)} /{y1(y2-y3)+x1(x2-x3)} 解けたからといっても式が複雑化しすぎて、一般化しすぎたことで かえって式が複雑になってチェックもしにくくなります。 具体的な座標を与えて実際のSinθを求めてみてください。 Sinθは一価関数でないので複数のθが出てきます 固定点(X1,Y1)を(0,Y1)とするだけでも式が少し簡単になります。 座標系の取り方次第で固定点を簡単にできますので、こういった工夫も必要です。 しかし、以下の式満たさないと(X2,Y2),(X3,Y3)に円板上の点という 条件を満たしません。 (X2-X0)^2+(Y2-Y0)^2=r^2 (X3-X0)^2+(Y3-Y0)^2=r^2 以下は上記の回転移動の関係から成り立っていると考えられるので θに付いて解くには必ずしも必要ないかもしれないが式の簡単化には 役立つかもしれないね。 (X'2-X'0)^2+(Y'2-Y'0)^2=r^2 (X'3-X'0)^2+(Y'3-Y'0)^2=r^2
補足
回答有難うございます。 >一般化しすぎて変数が多すぎます ご指摘の通り変数が多く式が複雑になり困っています。 円板が置かれる位置が都度変わるのでこのようになってしまいました。 以下、確認をさせて下さい。 Sinθを求める部分(なぜそうなるのか理解できていませんが・・・)で式を aZ^2+bZ+c=0 とすると Z = {-b±√(b^2 -4ac)}/(2a) となります。 その解を下記式に代入し、最適な解を採用すれば良いということでしょうか? (X'0,Y'0)=(X0*Cosθ-Y0*Sinθ,Y0*Cosθ+X0*Sinθ) (X'2,Y'2)=(X2*Cosθ-Y2*Sinθ,Y2*Cosθ+X2*Sinθ) (X'3,Y'3)=(X3*Cosθ-Y3*Sinθ,Y3*Cosθ+X3*Sinθ) (Y'0-Y1)/(X'0-X1)=-1*(X'3-X'2)/(Y'3-Y'2) また、Sinθを求める部分でなぜそうなるのかについても説明頂けると助かります。 お手数お掛けしますがよろしくお願いします。
- nag0720
- ベストアンサー率58% (1093/1860)
(X0,Y0),(X2,Y2),(X3,Y3)を回転させようとするから難しくなります。 (X1,Y1)を逆方法に回転させると考えれば簡単になります。 (X1,Y1)を-θだけ回転すると、 (X'1,Y'1)=(X1*Cosθ+Y1*Sinθ,Y1*Cosθ-X1*Sinθ) (Y0-Y'1)/(X0-X'1)=-1*(X3-X2)/(Y3-Y2) まとめると、 (X1(X3-X2)+Y1(Y3-Y2))Cosθ+(Y1(X3-X2)-X1(Y3-Y2))Sinθ=X0(X3-X2)+Y0(Y3-Y2) これからθを求めることができます。
お礼
回答有難うございます。 (X1,Y1)を回転させるという発想は思いつきませんでした。 実際に数値を代入して試してみたいと思います。
お礼
具体例を上げての説明、有難うございます。 実際にプロットされた画像を見ることにより、実感することができました。 自分で実際に解き、手順と解を確認したいと思います。
補足
具体例について実際に解いてみましたが解が合いませんでした。 Zについての2次方程式を aZ^2+bZ+c=0 としたときにa,b,cに具体例の各々の値を代入すると a=39.377469 b=2.3608238 c=-7.973038 となり、解の公式 Z = {-b±√(b^2 -4ac)}/(2a) へa,b,cを代入して求めると Z1=0.4209951 Z2=-0.4809488 となり、説明して頂いたZの値 Z1=0.5489751731 Z2=-0.6058630451 と有効桁数の関係で完全一致は不可能と思われますが、解が異なってしまいます。 ※計算はExcelとスクリプト(PLC)で処理させています。 以下確認させて頂けないでしょうか? 1)Zについての2次方程式について以下の解釈で問題ないでしょうか? 例 -2 y1^2 y3 y2=-2*y1^2*y3*y2 2)aZ^2+bZ+c=0としたとき、値を代入した際のa,b,cの値 お手数お掛けしますがよろしくお願いいたします。