判定一个点是否在三角形内
生活随笔
收集整理的這篇文章主要介紹了
判定一个点是否在三角形内
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
三角形的面積公式如下:
在此處使用一種常見且簡便的方法:如果三角形PAB,PAC和PBC的面積之和與三角形ABC的面積相等,即可判定點P在三角形ABC內(nèi)(包括在三條邊上)。
可知,該方法的關(guān)鍵在于如何計算三角形的面積。幸運地是,當知道三角形頂點(A,B和C)的坐標((Ax, Ay),(Bx, By)和(Cx, Cy))之后,即可計算出其面積:
代碼如下:
public final class Demo {public static boolean isInTriangle(POINT A, POINT B, POINT C, POINT P){if(A.x<0||A.x>99||B.x<0||B.x>99||C.x<0||C.x>99||A.y<0||A.y>99||B.y<0||B.y>99||C.y<0||C.y>99)return false;/*在這里完成代碼*/double d1=area(A,B,C);double d2=area(A,B,P)+area(A,C,P)+area(B,C,P);if(Math.abs(d1-d2)<0.0001) //一定要記得加絕對值,否則不對,由于浮點數(shù)的計算存在著誤差,//故指定一個足夠小的數(shù),用于判定兩個面積是否(近似)相等。return true;return false;}private static double area(POINT a, POINT b, POINT c) {return Math.abs(0.5*(a.x*b.y+b.x*c.y+c.x*a.y-a.y*b.x-b.y*c.x-c.y*a.x));} }
轉(zhuǎn)載于:https://www.cnblogs.com/berylqliu/p/6261492.html
總結(jié)
以上是生活随笔為你收集整理的判定一个点是否在三角形内的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10怎么改磁盘容量 Win10修改
- 下一篇: js实现的省市联动