演算法 Python判斷乙個點是否在多邊形內部

2022-07-05 11:54:11 字數 1600 閱讀 9775

題目:

#點與多邊形頂點重合

if (sx == px and sy == py) or (tx == px and ty == py):

return (px, py)

#判斷線段兩端點是否在射線兩側

if (sy < py and ty >= py) or (sy >= py and ty < py):

#線段上與射線 y 座標相同的點的 x 座標

x = sx + (py - sy) * (tx - sx) / (ty - sy)

#點在多邊形的邊上

if x == px:

return (px,py)

#射線穿過多邊形的邊界

if x > px:

flag = not flag

j = i

i += 1

#射線穿過多邊形邊界的次數為奇數時點在多邊形內

return (px,py) if flag else 'out'

#根據陣列下標奇偶數得到點的座標

def getpoint(a):

i = 0

zhima =

while i < len(a.split(',')[1::2]):

i += 1

return zhima

#根據輸入的點迴圈判斷芝麻是否在多邊形裡面,如果全部在外面則輸出no,否則輸出芝麻的座標

def rs(zhima, duobianxing):

zm = getpoint(zhima)

dbx = getpoint(duobianxing)

count = 0

for point in zm:

rs = raycasting(point, dbx)

if rs == 'out':

count += 1

else:

print rs

if count == len(zm):

print "no"

zhima = "6,4,8,8,9,9"

duobianxing = "1,1,7,3,5,7"

rs(zhima,duobianxing)

結果:

判斷乙個點是否在RotatedRect中

opencv函式pointpolygontest c double pointpolygontest inputarray contour,point2f pt,bool measuredist 用於判斷乙個點是否在輪廓中 當measuredist設定為true時,若返回值為正,表示點在輪廓內部,返...

判斷乙個點是否在RotatedRect中

opencv函式pointpolygontest c double pointpolygontest inputarray contour,point2f pt,bool measuredist 用於判斷乙個點是否在輪廓中 當measuredist設定為true時,若返回值為正,表示點在輪廓內部,返...

Python判斷乙個變數是否存在

在呼叫乙個變數的時候,如果這個變數沒有被定義,那麼python會報錯。要解決的方法也很簡單,就是事先給變數賦乙個空值。但是也可以通過呼叫系統的內建函式來判斷乙個變數名是否已經被定義了。有3個內建函式都可以實現。1 2 3 4 5 6 7 8 9 res1 test inlocals keys res...