待完善,目前做到这一步就就记录下来了
###圆弧插补完整版
#圆心在原点
#逆时针插补
import math
import matplotlib.pyplot as plt
import numpy as np
class circle_insert:
#初始化坐标、判别函数
def __init__(self,pow,pow_0):
self.X0 = int(pow_0[0])
self.Y0 = int(pow_0[1])
self.Xq = int(pow[0])
self.Yq = int(pow[1])
self.r = int (math.sqrt((self.Xq-self.X0)**2+(self.Yq-self.Y0)**2))
self.n = self.r*8
#判别函数
self.Fi = [0]
#起始x轴坐标
self.x = [self.Xq]
#起点y轴坐标
self.y = [self.Yq]
self.xiangxian = 0
self.i = 0
def cal(self):
#循环次数
for i in range(self.n):
if self.y[-1] > self.Y0 or self.y[-1] ==self.Y0 and self.x[-1]==self.r or self.y[-1]==self.Y0 and self.x[-1]==self.r-1 or self.y[-1]==self.Y0 and self.x[-1] ==self.X0+self.r:
if self.x[-1]>=self.X0:
#第一象限x,y坐标记录以及偏差函数的计算
if self.Fi[-1]>=0:
F_tmp = self.Fi[-1]-2*(self.x[-1]-self.X0)+1
x_tmp = self.x[-1]-1
y_tmp = self.y[-1]
self.Fi.append(F_tmp)
self.x.append(x_tmp)
self.y.append(y_tmp)
else:
F_tmp = self.Fi[-1]+2*(self.y[-1]-self.Y0)+1
x_tmp = self.x[-1]
y_tmp = self.y[-1]+1
self.Fi.append(F_tmp)
self.x.append(x_tmp)
self.y.append(y_tmp)
#在以圆心为坐标原点的第二象限
else:
#第二象限x,y坐标记录以及偏差函数的计算
if self.Fi[-1]<=0:
F_tmp = self.Fi[-1]+2*(abs(self.x[-1])+self.X0)+1