————————————————點是否在三角形內——————————
如果點p在三角形abc內,則三角形的面積可以分成pab、pbc、pac三個小的三角形,如果不在三角形內則無法讓這三個三角形
與大的三角形的面積相同。
1.海**式法
s = sqrt(p*(p-a)(p-b)(p-c))
注:p為三角形abc的周長的1/2,a, b, c, 分別為三角形的三條邊長,s為三角形的面積
兩點之間的距離公式為:|ab| = |=sqrt((x1-x2)(x1-x2)-(y1-y2)(y1-y2)),其中a(x1,y1),b(x2,y2).
2.集合項鍊法求解面積:
向量的集合意義就是得到的平行四邊形的面積,而平行四邊形的一半就是三角形的面積,通過這個原理可以知道求三角形面積的方法
s = (x2-x1)(y3-y2)-(x3-x2)(y2-y1),其中a(x1,y1),b(x2,y2),c(x3,y3).
class point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def cross_product(p1, p2, p3): #求叉積
return (p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y)
def is_in_********(a, b, c, d): #判別是否在三角形內
if cross_product(a, b, d) >= 0 and cross_product(b, c, d) >= 0 and cross_product(a, c, d) >= 0:
return true
else:
return false
if __name__ == '__main__':
a = point(1, 3)
b = point(3, 5)
c = point(4, 5)
print(is_in_********(a, b, c, point(2, 2)))
print(is_in_********(a, b, c, point(3, 4.5)))
判斷點是否在三角形內
概述 給定三角形abc和一點p x,y,z 判斷點p是否在abc內。這是遊戲設計中乙個常見的問題。需要注意的是,這裡假定點和三角形位於同乙個平面內。本文介紹三種不同的方法,由淺入深 一 內角和法 連線點p和三角形的三個頂點得到三條線段pa,pb和pc,求出這三條線段與三角形各邊的夾角,如果所有夾角之...
判斷點是否在三角形內
給定三角形abc和一點p x,y,z 判斷點p是否在abc內。這是遊戲設計中乙個常見的問題。需要注意的是,這裡假定點和三角形位於同乙個平面內。本文介紹三種不同的方法,由淺入深 連線點p和三角形的三個頂點得到三條線段pa,pb和pc,求出這三條線段與三角形各邊的夾角,如果所有夾角之和為180度,那麼點...
判斷點是否在三角形內
問題 在二維座標系中,已知三角形頂點的座標,那麼對於座標系中的任意一點p,判斷是否在三角形內?double area point a,point b,point c bool is point a,point b,point c,point d 設s area abc s1 area abd s2 ...