ともさんの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で幾何計算 >円と直線の交点

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

型紙の製図方法  
CADデータエクセルファイルに変換するJavaClass  
自作したミツバチの巣箱  
Javaで静止画像(Jpeg)を動画(Mov)に変換  
蜂舎のこと  
「吉田式巣箱」の製作:巣箱編  
ミツバチ用電気柵の構造  
【家庭菜園】輪作プラン  
小屋作り  
ミツバチの巣箱  
吉田式巣箱  

私の他のサイト

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

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

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