2017-02-22 11 views
-1

ポイントが正方形の中にあるかどうかを調べたいと思います。私は正方形の対角線の終点座標を与えられており、他の対角の終点座標を見つけました。ポイントが正方形内にあるかどうかをJavaで調べる方法はありますか?

私が考えることのできる方法の1つは、外接円の性質を使用して解決することでした。私は四角形の外接円内にすべての点を含めましたが、余分な点を除外する方法は考えられません。

エッジは座標軸と平行ではありません。

javaで行う方法はありますか?コードの

相続人は私の一部:

if(distance(x1,y1,x2,y2,j,i)<=dd) 
     A[i][j]=1;   
    else 
     A[i][j]=0; 

X1、Y1、X2、Y2は正方形とDDの対角の座標では、対角線の長さであり、i、jは座標で0より大きい100未満です。 私は条件を満たす点を格納するために配列を使用しています。

+0

この記事はあなたを助けることがあります。次の条件の両方に該当する場合に限っ

ポイントは、正方形の内側にあります。 http://alienryderflex.com/polygon/ –

+1

エッジが座標系と必ずしも平行でない正方形については、http://math.stackexchange.com/questions/190111/how-to-check-if-aも参照してください。 -point-is-a-a-rectangleです。どのような点がベクトルの時計回りか反時計回りかを調べる答えです。 Sedgewickの "Algorithms in C"はこのccw()テストの擬似コードを提供しています.3面または4面のポリゴンは "ポリゴンをポイントする"よりも単純なケースです。 [あなたは疑似コードをオンラインで見つけることができます。] –

+0

クラスメートはこちら:http://stackoverflow.com/questions/42407174/ – MBo

答えて

0

この場合、ポイントからマンハッタンの中心までの距離をプログラムし、マンハッタンの距離と正方形の中心から角の1つまでの距離を比較することができます(距離、中心)<距離(中心、制限)

+0

もう少し説明してください。 –

+0

詳細はこちら:https://en.wikipediaorg/wiki/Taxicab_geometryこれは通常離散数の距離に使用されますが、私はそれもfloat値で使うことができると思います – MJCORBACHO

+1

マンハッタン距離は関係ありません:それは各座標軸に沿った距離の合計です。 2つの問題:1)それらの座標軸を定義する必要があります。 2)合計は関係ありません。中心から2つの座標軸に沿った距離の最大値に過ぎません。 –

1

Javaで行う方法はありませんが、単純な計算です。

ラインの式は、

a * x + b * y = c1 (1) 

これに平行な直線の方程式は、

a * x + b * y = c2 (2) 

これらに直交する2つのラインの式は、次のとおり

-b * x + a * y = c3 (3) 
-b * x + a * y = c4 (4) 

これは四角形の四辺の方程式です。

あなたの四角形の上の方程式(abc1..c4)の係数を決定します。

min(c1, c2) <= a * x + b*y <= max(c1, c2) 
min(c3, c4) <= -b * x + a * y <= max(c3, c4) 
+0

座標のどれかが見つからなければ? –

+0

私はあなたが何を求めているのか分かりません。 –

+0

私は座標を知らないと、それを実装できますか? –

関連する問題