資源簡介
用python3.6實(shí)現(xiàn)delaunay三角剖分算法,讀入存有坐標(biāo)的csv文件,計算出結(jié)果用Tkinter庫顯示。
代碼片段和文件信息
import?tkinter
from?tkinter?import?filedialog
import?csv
#?根據(jù)兩點(diǎn)坐標(biāo)計算距離
def?caldis(x1?y1?x2?y2):
????return?((x1-x2)**2+(y1-y2)**2)**0.5
#?輸入三角形三個頂點(diǎn),計算外接圓圓心及半徑
def?calcenter(x1?y1?x2?y2?x3?y3):
????y1=-y1??#?計算公式是根據(jù)平面直角坐標(biāo)推算的,原點(diǎn)在左下角,但是計算機(jī)屏幕坐標(biāo)原點(diǎn)在右上角,所以計算式y(tǒng)坐標(biāo)取負(fù)
????y2=-y2
????y3=-y3
????if?(y1?!=?y3?and?y1?!=?y2?and?y2?!=?y3)?:??#?判斷是否有y坐標(biāo)相等,即三角形某邊斜率為0的情況,避免出現(xiàn)墳分母為0的錯誤
????????if(((x3-x1)/(y3-y1))-((x2-x1)/(y2-y1)))?==?0:
????????????x2?=?x2+1
????????x?=?(((y1?+?y3)?/?2)?+?((x1?+?x3)?/?2)?*?((x3?-?x1)?/?(y3?-?y1))?-?((y1?+?y2)?/?2)?-?((x1?+?x2)?/?2)?*
?????????????((x2?-?x1)?/?(y2?-?y1)))?/?(((x3?-?x1)?/?(y3?-?y1))?-?((x2?-?x1)?/?(y2?-?y1)))
????????y?=?-((x3?-?x1)?/?(y3?-?y1))?*?x?+?((y1?+?y3)?/?2)?+?(((x1?+?x3)?/?2)?*?((x3?-?x1)?/?(y3?-?y1)))
????????return?(x?-y
評論
共有 條評論