


 
 
 
 
 
 
 |
高校数学の基礎(6)で少し書きましたが、ここではもう少し詳しく記述しておきます。
線と円の交点計算をするのに連立方程式を解く場合、片方が2次式であるため解が2つ想定されます。そのため、連立方程式を解くのも一苦労してしまいます。ここでは、回転写像を利用して解く事を考えます。
 |
@まず、線の傾き角度を算出します。
A := ArcTan2(y2-y1,x2-x1); |
 |
A点(x1,y1)を中心に角度A分、逆回転したと考えます。
(x2,y2)の回転後が(x2',y2')
(xc,yc)の回転後が(xc',yc')
です。 |
|
B線と円の中心の距離dを計算します。
距離d=|yc'−y1|
このdが円の半径 rc に等しい場合は、円と線は接する事になり、rc よりも小さい時には2交点、rc よりも大きい時は交点無し、となります。
C接する場合には、その接点は(xc',y1)となります。2交点の場合には、
(xc'−√(rc2-d2),y1)
(xc'+√(rc2-d2),y1)
となります。 |
 |
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θ
となります。
回転写像を利用して、直線と円の交点を表示する簡単なサンプルプログラムです。絵は、TImageを配置して、そこに描きます。10ドットを1単位とします。 |
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
▲PREV
▼NEXT
CAD作ろ!
|