描画プログラムで、2楕円に接する円を描く
VBで円を描くプログラムを作っています。
2つの楕円に接し、片方の楕円円周上にある
1点を通過する円を描きたいです。
正確には、もう一方(通過点のない側)の円周上にある
2接円が通過する点を求めたいです。
楕円はxy座標に対して平行ではなく、さまざまに傾いています。
楕円A(接円の通過点がある)
楕円中心(Ax,Ay)
楕円長径Aa
楕円短径Ab
楕円長径ベクトルAaD(x,y)
楕円短径ベクトルAbD(x,y)
焦点As1(x,y)、As2(x,y)
通過点T1(x,y)
通過点を通る楕円Aの接線T1L
通過点を通る楕円AのベクトルT1LD(x,y)
も出ています。
楕円B(接円の通過点がない)
楕円中心(Bx,By)
楕円長径Ba
楕円短径Bb
楕円長径ベクトルBaD(x,y)
楕円短径ベクトルBbD(x,y)
焦点Bs1(x,y)、Bs2(x,y)
楕円はいずれも、中心から長径方向のベクトルに進んだ点を始点に描画されています。
ちなみにこの2楕円+片方の楕円円周上通過点の2接円を考える前に
真円AB2つと、片方の円周上通過点Tの2接円も考えました。
円AおよびB
中心(x,y)
半径Ar、Br
円A上の通過点T(x,y)
通過点を通る円Aの接線T1L
通過点を通る円AのベクトルT1LD(x,y)
円A、Bはどちらも、中心からX軸方法に半径分の距離をとった座標
を始点に描画されています。
この場合は、
(1)真円A上にある通過点から円接線を引く。
(2)接線T1Lから、真円A中心方向に法線T1Nを引く。長さは円Bの半径
(3)2の法線の終点座標T1Ned(x,y)と円Bの中心をつなぐ線T1NBを取る
(4)T1NedのX軸正方向水平線から、T1NとT1NBの角度を調べる
(5)円B上に始点からT1NB-T1Nの角度をとった円周上点T2を取る。ここが2接円の通過点。
という感じでできました。(5)の計算が、手元に資料がないので曖昧なんですが。
真円2接の応用で楕円2接もトライしたのですがどうもできません。
よろしくお願いします!
お礼
なるほど、そういう方法があったのに気づきませんでした(汗 むりやりレイヤーごと回転させてみたらどうにか斜めにできました。 回答ありがとうございました。