与えられた長方形内subtriangleを識別するためにどのように長方形の座標

StackOverflow https://stackoverflow.com/questions/2310794

質問

幅w及び高さhの長方形を考えます。そして、座標x、その矩形内のYは、私は内いた三角形を識別したいと思います。

すなわち。関数は、パラメータ(x、y)を取得し、それらがある場合は、B、C、Dまたはその三角形インデックス、すなわち(0 = A、1 = B、2 = C、3 = D)を示すゼロベースの数を返す必要がありそのためます。

私は、これが赤い線の> =式と緑のラインの> =式のようなものだろうと思いますか?

私はVB.NET

でこれを実装したいのですが
役に立ちましたか?

解決

aboveRed = x*h > y*w;
aboveGreen = (w-x)*h > y*w;
if (aboveRed)
{
    if (aboveGreen) return "C"; else return "B";
}
else
{
    if (aboveGreen) return "D"; else return "A";
}

他のヒント

グリーンラインの式:h * x + w * y = h * w

赤い線の式:x * h - y * w = 0

Public Function GetTriangleNumber(ByVal x As Integer, ByVal y As Integer) 
                                                                     As Integer
    Dim overGreenLine As Boolean = ((((h * x) + (w * y)) - (h * w)) < 0)
    Dim overRedLine As Boolean = (((h * x) - (w * y)) > 0)
    If overGreenLine Then
        Return IIf(overRedLine, 2, 3)
    End If
    Return IIf(overRedLine, 1, 0)
End Function
私は左上と右上の角からポイントまでの線の角度を検討します。それは両方の場合に45度未満(エッジの基部方向を調整)である場合、点はC.他の組み合わせであり、他の3つの三角形をカバーします。

線の長さの比率はあなたに十分な情報(と罪(45)...というか罪(PI / 4を与えるように、あなたが実際に)、これを実行するために計算逆三角関数を必要としないです固定値)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top