• 大小: 6KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-01-09
  • 语言: Python
  • 标签: TIN  Delaunay  

资源简介

用python3.6实现delaunay三角剖分算法,读入存有坐标的csv文件,计算出结果用Tkinter库显示。

资源截图

代码片段和文件信息

import tkinter
from tkinter import filedialog
import csv

# 根据两点坐标计算距离
def caldis(x1 y1 x2 y2):
    return ((x1-x2)**2+(y1-y2)**2)**0.5

# 输入三角形三个顶点,计算外接圆圆心及半径
def calcenter(x1 y1 x2 y2 x3 y3):
    y1=-y1  # 计算公式是根据平面直角坐标推算的,原点在左下角,但是计算机屏幕坐标原点在右上角,所以计算式y坐标取负
    y2=-y2
    y3=-y3
    if (y1 != y3 and y1 != y2 and y2 != y3) :  # 判断是否有y坐标相等,即三角形某边斜率为0的情况,避免出现坟分母为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

评论

共有 条评论