我正在使用一種方法,我在互聯網上找到了在cpp中,我改變了一下java。它似乎只工作了一半時間。這是一個Java的錯誤?因爲它會根據三角形內的位置返回真或假。任何人都可以幫助我解決它或找到一個更好的方法來測試三角形內的一個點嗎?繼承人的方法。對不起,如果它很難理解的問題得到奇怪的結果與獲得點內三角形的方法
public static float area(float x1, float y1, float x2, float y2, float x3, float y3)
{
return (float) Math.abs((x1*(y2-y3) + x2*(y3-y1)+ x3*(y1-y2))/2.0);
}
/* A function to check whether point P(x, y) lies inside the triangle formed
by A(x1, y1), B(x2, y2) and C(x3, y3) */
public static boolean isInside(float x1, float y1, float x2, float y2, float x3, float y3, float x, float y)
{
/* Calculate area of triangle ABC */
float A = area (x1, y1, x2, y2, x3, y3);
/* Calculate area of triangle PBC */
float A1 = area (x, y, x2, y2, x3, y3);
/* Calculate area of triangle PAC */
float A2 = area (x1, y1, x, y, x3, y3);
/* Calculate area of triangle PAB */
float A3 = area (x1, y1, x2, y2, x, y);
/* Check if sum of A1, A2 and A3 is same as A */
return (A == A1 + A2 + A3);
}
嗯,我真的質疑這種方法的有效性,只是看着它,它會檢查一個點是否在三角形內,基於該點的面積到三角形的每個其他點。我不喜歡這種邏輯,因爲在某些情況下可能會失敗。你需要幫助提出一個新的? – DreadHeadedDeveloper 2014-10-05 15:46:05
你可以發佈一些例子,當方法給出正確和不正確的輸出?這將幫助我們更多 – DreadHeadedDeveloper 2014-10-05 16:21:13
我可以做一個快速的視頻... – 2014-10-05 17:06:52