“问题插图”

给定的宽度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.其它组合将覆盖其他三个三角形。

您实际上并不需要计算逆三角函数做到这一点,为各行的长度的比率为您提供足够的信息(和sin(45)...或相当罪(PI / 4)是固定值)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top