PNPoly演算法python實現

2021-10-09 22:09:11 字數 1040 閱讀 1792

解決的問題:實現判定乙個點是否在封閉的多邊形內。

原理:這個演算法是由w. randolph franklin提出的,根據jordan curve theorem,多邊形將平面分為內外兩個區域,假設待測點在多邊形內部,從待測點引出一條射線必然會與多邊形有至少乙個交點。該射線與多邊形第一次相交時將「衝出」多邊形,第二次相交將「進入」多邊形,依此類推,若射線與多邊形有奇數個交點,則該點在多邊形內部,反之則在外部。

pnpoly演算法正是從待測點引出一條水平向右的射線,並計算與多邊形的交點個數。

python實現

// an highlighted block

import operator

import matplotlib.pyplot as plt

import pandas as pd

#nvert:多邊形的頂點個數,vertx:多邊形頂點的x值的列表,verty:多邊形頂點的y值的列表,(testx,testy):檢測點座標

def pnpoly

(nvert,vertx,verty,testx,testy)

: c=

0for i in

range(0

,nvert)

:if i==0:

j=nvert-

1else

: j=i-

1if operator.

ne(operator.

gt(verty[i]

,testy)

,operator.

gt(verty[j]

,testy)

) and operator.

lt(testx,

(vertx[j]

-vertx[i])*

(testy-verty[i])/

(verty[j]

-verty[i]

)+ vertx[i]):

c=1-c #點在多變形內

return c

Perona Malik 演算法Python實現

最近正好在學習關於影象處理的東西,需要用到pm perona malik 演算法,所以就把自己的一些理解和 貼上來,希望能跟大家一起 pm演算法的具體原理可以網上查閱相關資料或者相關書籍,這裡只是簡要介紹大概的實現思路 一般而言,對乙個影象進行提取特徵之前,需要進行降噪濾波處理。最常用的應該是高斯濾...

Miller Rabin演算法 Python實現

用python實現了miller rabin的素性檢驗演算法 import random deflargeprime generate bit 1024 print generating large prime.i 1while true num random.randrange 2 bit 1 2...

python 關聯規則演算法 apriori實現

coding utf 8 from future import print function import pandas as pd 自定義連線函式,用於實現l 到c k的連線 def connect string x,ms x list map lambda i sorted i.split ms...