


 
 
 
 
 
 
 |
高校数学の基礎(6)で少し書きましたが、ここではもう少し詳しく記述しておきます。
円と円の交点計算をするのに連立方程式を解く場合、双方とも2次式であるため、連立方程式を解くのも一苦労してしまいます。ここでも回転写像を利用して解く事を考えます。
 |
@まず、2円の中心点を結ぶ直線を考え、その傾き角度を算出します。
A := ArcTan2(y2-y1,x2-x1); |
 |
A点(x1,y1)を中心に角度A分、逆回転したと考えます。
(x2,y2)の回転後が(x2',y2')
です。
B円の中心点間距離dを計算します。
距離d=|x2'−x1|
このdが円の半径(r1+r2)に等しい場合は、2円は接する事になり、(r1+r2)よりも小さい時には2交点、(r1+r2)よりも大きい時は交点無し、となります。
また、dが|r1−r2|に等しい場合は、2円は内接する事になり、|r1−r2|よりも小さい時は交点無しとなります。同心円の場合(d=0)も交点無しとなります。
|
 |
C接する場合(1交点である場合)、r1≧r2 ならば (x1+r1,y1)、r1<r2 ならば (x1+d-br,y1)となります。
2交点の場合には、
A+B=d、A2+h2=r12、B2+h2=r22
これより、
A2−B2=r12−r22
A2−(d−A)2=r12−r22
A2−(d2−2dA+A2)=r12−r22
−d2+2dA=r12−r22
2dA=d2+r12−r22
A=(d2+r12−r22)/2d
h=√(r12−A2)
となりますので、交点は、
(x1+A,y1±h)
となります。 |
 |
D接点又は交点を
点(x1,y1)を中心に角度A分、回転した点の座標が、求める点となります。 |
回転写像は、
 | ( | cosθ -sinθ | ) θ:回転角 |
sinθ cosθ |
つまり
x'=x×cosθ−y×sinθ
y'=x×sinθ+y×cosθ
ですが、これは中心(0,0)での回転ですので、点(x0,y0)を中心に回転する場合には、
x'=x0+(x−x0)×cosθ−(y−y0)×sinθ
y'=y0+(x−x0)×sinθ+(y−y0)×cosθ
となります。
回転写像を利用して、2円の交点を表示する簡単なサンプルプログラムです。絵は、TImageを配置して、そこに描きます。10ドットを1単位とします。 |
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
▲PREV
▼NEXT
CAD作ろ!
|