- 締切済み
描画プログラムで、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接もトライしたのですがどうもできません。 よろしくお願いします!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
こんな内容の質問は、数学(平面幾何学)の問題でしょう。 そちら数学の質問カテゴリで質問したらどうです。 http://kaiketsu.athome.jp/qa3434355.html?ans_count_asc=1 のようなのも数学カテで質問されているようです。 結局、公式類似の式を、紙上計算で考え、連立方程式を解く計算問題ではないですか。 プログラムはその係数ばかりの式を言語ルールで数式化して計算させるだけでは。 ーー 2楕円は任意に画面に書いたとき、それぞれの楕円の方程式が決まる。 その方程式と円(x-a)^2+(y-b)^2=rの方程式とで、接し且つ指定点を 通る円のa,b,rを求め、円を描く、ようなことではダメなのかな? ーーーー 楕円1個とその外にある1点(円の中心座標(a,b))があるとき、楕円上のどの点で円に接することになるのか、その時の円の半径を求める式を教えてもらったら。接線の接点での垂線上に円の中心があるのだと思うが。それで、もうひとつの楕円への半径の式を知る。その両者の半径は等しいと言うことで半径が決まる。それと指定点を通るという条件で円が決まると思う。 円は3点で決まるから、接点1、接点2、指定点でもよいと思う。