ともさんのHP >プロブラミング >JAVAで幾何計算 >円と直線の交点

円と直線の交点を求める

JAVA(コンピュータ言語)で求める方法です。以下の順序で交点を求めます。
円と直線の交点

①直線と円の中心点との距離aを求める。
②a > 円の半径r → 交点なし
 a = r → 一つの交点
 a < r → 2つの交点
③円の中心から直線へ垂点を下ろす
 交点が1つなら、垂点が交点になる
④垂点から交点までの距離bを求める
⑤垂点から直線状を±b移動した位置を計算し、交点とする

広告

円と直線の交点を求めるJAVAメソッド

こんな感じで作りました。
円の中心を表わすPointクラスと半径、直線を表わすLineクラスを入れ、交点を表わすPoint配列を返します。
交点がない場合はPoint[]はnull。
交点が1つの場合、半径と距離aの差が1/100以下の時に1つと判定しています。
いろいろなメソッドを呼び出していますが、ほかのページでこれらを紹介します。

public tomojavalib.p2cad.Point[] enSenKouten( tomojavalib.p2cad.Point p, double r, Line l)
{
tomojavalib.p2cad.Point[] kouten = null;
//円中心と線の距離aをもとめる
double a = senTenKyori( l , p );
//円の半径より大きければ交点なし、=なら交点1つ、小さければ交点2つ
if( r < a ){ return null; }
//中心から線へ垂点を下ろす
tomojavalib.p2cad.Point suiten = suiten( l , p );
//交点1つなら垂点が交点、
if((int)(r*100.)==(int)(a*100.)){ kouten = new tomojavalib.p2cad.Point[1] ; kouten[0]= suiten ; return kouten; }
//rとaからもう1辺のbを求める
double b = Math.sqrt( r*r - a*a);
//垂点から直線上を±b行ったところが交点
kouten = new tomojavalib.p2cad.Point[2];
kouten[0] = new tomojavalib.p2cad.Point();
kouten[1] = new tomojavalib.p2cad.Point();
kouten[0] = pointLengthAngle( suiten , b , l.getAngle() );
kouten[1] = pointLengthAngle( suiten , b , l.getAngle()-180. );
return kouten;
}  

最終更新日: 2014-03-29 08:25:38

ともさんのHP >プロブラミング >JAVAで幾何計算 >円と直線の交点

広告
新着ページ

AIを利用し、衣服のデザイン画から型紙を制作する方法  
2つのアパレル3D技術でひらくオーダーメイド生産の手法  
【洋裁型紙】前後身頃の肩の傾きは何故前身頃の方が傾いているのか  
電子追尾式天体写真撮影法  
日本ミツバチ巣箱の種類  
ドラフター(製図台)でソーイング  
日本ミツバチが逃亡  
カメさんの箱庭  
天体用デジタルカメラの構造と天体写真  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
USBカメラをJAVAで制御  

他のサイト

3D-CAD
洋裁CAD

いいねなど

 RSS 

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます