日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判定一个点是否在三角形内

發(fā)布時間:2024/10/12 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判定一个点是否在三角形内 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

三角形的面積公式如下:


在此處使用一種常見且簡便的方法:如果三角形PAB,PAC和PBC的面積之和與三角形ABC的面積相等,即可判定點P在三角形ABC內(nèi)(包括在三條邊上)
可知,該方法的關(guān)鍵在于如何計算三角形的面積。幸運地是,當知道三角形頂點(A,B和C)的坐標((Ax, Ay),(Bx, By)和(Cx, Cy))之后,即可計算出其面積:

S?=?|(Ax?*?By?+?Bx?*?Cy?+?Cx?*?Ay?-?Ay?*?Bx?-?By?*?Cx?-?Cy?*?Ax)?/?2|

代碼如下:

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。