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

円と直線の交点を求める

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

@直線と円の中心点との距離aを求める。
Aa > 円の半径r → 交点なし
 a = r → 一つの交点
 a < r → 2つの交点
B円の中心から直線へ垂点を下ろす
 交点が1つなら、垂点が交点になる
C垂点から交点までの距離bを求める
D垂点から直線状を±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で幾何計算 >円と直線の交点

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

初めての確定申告  
日本ミツバチの待ち箱を作りました  
竹収納棚  
JavaFX Alertダイアログを最前面  
薪ストーブの掃除  
ウエストポーチを作りました  
USBカメラをJAVAで制御  
男の洋裁  
トマト抑制栽培  
JavaFX StageStyle  
ニホンミツバチ用観察巣箱の図面  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

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