1

問題図

幅 w、高さ h の長方形が与えられます。その長方形の座標x、yで、どの三角形にいるのかを特定したいと思います。

つまり、関数はパラメータ (x,y) を取り、a、b、c、d または三角形のインデックスを表す 0 ベースの数値を返す必要があります。つまり、(0=A,1=B,2=C,3=D)その順序で。

これは、>= 赤い線の式と>= 緑の線の式のようなものになると思いますか?

これをVB.NETで実装したい

4

3 に答える 3

6
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";
}
于 2010-02-22T12:35:23.227 に答える
3

緑の線の式: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
于 2010-02-22T12:42:25.803 に答える
1

左上隅と右上隅からポイントまでの線の角度を検討します。どちらの場合も 45 度未満の場合 (エッジのベース方向を調整)、ポイントは C にあります。他の組み合わせは、他の 3 つの三角形をカバーします。

これを行うために実際に逆三角関数を計算する必要はありません。線の長さの比率で十分な情報が得られるからです (そして、sin(45) ... またはむしろ sin(pi/4) は固定値です)。 .

于 2010-02-22T12:32:45.560 に答える