0

2 つのセクションを含むセグメント クラスがあり、各セクションには X 座標と Y 座標の 2 点が含まれます。

Point クラスには getX() および getX() メソッドがあります。

public class Segment
{
    private Point pointLeft;
    private Point pointRight;
}

2 つのセクション間のオーバーラップ (存在するかどうか) を見つけたい:

public double overlap (Segment other)
{

}

どうすれば見つけられますか (X 軸のみが重なっています)

X 軸に平行な 2 つのセクション (各セクションの Y は同じ)

4

2 に答える 2

1

2つの点で長方形を定義できます。

Rectangle.Intersectメソッドをお探しですか?

http://msdn.microsoft.com/en-us/library/y10fyck0.aspx

于 2012-04-11T15:17:22.397 に答える
1

あなたの質問に対する私の理解は、最初に両方の線を X 軸に投影してから、それらの交点を見つけたいということです。

ここに画像の説明を入力

つまり、上の画像の X 軸上のグレー表示されたセクションの長さが必要です。

次のように、4 つの部分に分けて実行します。

if (other.pointLeft.X <= pointLeft.X && other.pointRight.X >= pointRight.X)
    return pointRight.X - pointLeft.X;

if (pointLeft.X <= other.pointLeft.X && pointRight.X >= other.pointRight.X)
    return other.pointRight.X - other.pointLeft.X;

if (pointLeft.X <= other.pointLeft.X && pointRight.X <= other.pointRight.X)
    return pointRight.X - other.pointLeft.X;

if (pointLeft.X >= other.pointLeft.X && pointRight.X >= other.pointRight.X)
    return other.pointRight.X - pointLeft.X;

return 0;

注意してください、私はこれを適切にコーディングしましたが、テストする機会がありませんでした. しかし、何をする必要があるかについての基本的なアイデアを提供する必要があります。

于 2012-04-11T15:24:36.250 に答える