2017-04-01 5 views
0

私は外と円周上に、ポイントが内部であるかどうかを知るために式を知っている:https://math.stackexchange.com/q/198769この引用は、我々は(それが唯一の5行だ、見積もりをお読みください)rdを比較しなければならないことを説明しています。ポイントが円に多かれ少なかれ属しているかどうかを知る方法?

しかし、ポイントが円であるかどうかを知りたいのですが。また、それは本当の問題です:点がビットの内/外の円であれば、円とみなしたいと思います。

どうすればいいですか?私は範囲内のd-r(すなわち、:比較)を区切ろうとしました。例:

IF(DR> -100 & & DR < 100){点が円上にある}

それは少し半径を有する円のために、-100と100と、動作(すなわち。:すべてビット円の外側/内側にある点は円上にあるとみなされます。

大きな半径の円については、ある点だけが円上にあるとみなされます(円の外/内にある点の一部だけが円上にあるとみなされます)。 。

だから、サークルの外/内のビットであるすべての点は、サークルの半径とは無関係にサークル上にあるとみなされたいと思う。どうやって ?絶対差のためにあなたの比較は

if Abs(d - r) < delta (i.e. 100) ... 

として短く書かしかし、あなたは、このような円の半径に応じた相対的な差が必要に思われるかもしれない

+0

*あなたのコードは、コードを記述しようとしているプログラミング言語に固有のものかもしれません。現在の状況では、あなたの問題(コード内で使用されているデータ型の誤解や限界などが原因である可能性があります)を引き起こす原因を突き止めることは非常に難しいです。 –

答えて

2

if Abs(d - r)/r < reldelta (i.e. 0.001) ... 
1

確率論的な観点から、あなたが定義することができ(@Mboによって提案されたような)距離マップの一種で、相対距離を採用し、それを使って各点に確率分布を構築します。この確率は、ポイントが円に属する可能性の一種を表す。直感的に言えば、ポイントが近いほど、サークルの一部になる可能性が高くなります。例:

rel_d = (d-r)/r; 

// P(x on the circle) = 1 - rel_d 
if(rel_d < 1){ 
    P_on_circle = 1 - rel_d; 
}else{ 
    P_on_circle = 0; 
} 
関連する問題