外面有一个三角形和一个点。我们需要找到从该点可见的三角形边的摘要长度。
在这种情况下,答案是AB + BC。
作为输入,有点的坐标。
所以问题是如何用C ++解决它?
P.S。在我看来,我们需要找到ρ(P;每个点)并观察这个距离是否与任何三角形边相交。然后选择满足条件的两个最远点,并找到边的总和。
答案 0 :(得分:1)
让我们为三角形顶点定义顺序。让它逆时针。你的三角形是ACB(顺时针顺序是ABC)。
如果点位于边缘定义的右半平面上,则该点会看到边缘。
这个公式:
res = (y2 - y1)*(px - x1) - (x2 - x1)*(py - y1)
给出关于半平面(px,py)相对于(x1,y1) - (x2,y2)段的信息。只需获得res
的标志。
你可以分析三角形的三个部分,得到点在右边的部分。
选择其他顺序会更改标志。