1、分三段,每段螺旋角固定
第一段:40°
第二段:55°
第三段:50°
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
import time
#time calculation start
start=time.perf_counter()
#parameter set
pr={"theta_value_1":10*np.pi/180,"theta_value_2":30*np.pi/180,"chisel edge angle":180*np.pi/180,
"R":0.506/2,"delta0":40*np.pi/180,"rotate_blank":0*np.pi/180}
pr_l={"L1":0.80,"L2":0.60,"L3":4.90}
pr_h1={"delta1":40,"delta21":55,"delta22":50,"delta3":50}
pr_h2={"delta1":40*np.pi/180,"delta21":40*np.pi/180,"delta22":40*np.pi/180,"delta3":50*np.pi/180}
l1=np.linspace(0,pr_l["L1"],num=100)[1:-1]
beta1=np.ones_like(l1)*pr_h1["delta1"]
l2=np.linspace(0,pr_l["L2"],num=100)+pr_l["L1"]
if pr_h1["delta21"]==pr_h1["delta22"]:
beta2=np.ones_like(l2)*pr_h1["delta21"]
else:
beta2=np.linspace(pr_h1["delta21"],pr_h1["delta22"],num=100)
l3=np.linspace(0,pr_l["L3"],num=1000)[1:-1]+pr_l["L1"]+pr_l["L2"]
beta3=np.ones_like(l3)*pr_h1["delta3"]
end = time.perf_counter()
execution_time = end - start
print(f"代码执行时间:{execution_time}秒")
fig = plt.figure(figsize=(5, 5))
plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
clist = ['blue', 'red', 'green', 'black', 'darkgreen', 'lime', 'gold', 'purple', 'green', 'cyan', 'salmon', 'grey',
'mediumvioletred', 'darkkhaki', 'gray', 'darkcyan', 'violet', 'powderblue']
plt.plot(l1,beta1,'r*',label='segment 1')
plt.plot(l2,beta2,'g*',label='segment 2')
plt.plot(l3,beta3,'b*',label='segment 3')
plt.xlabel('length')
plt.ylabel('helical angle')
plt.legend()
plt.tight_layout()
plt.grid(True)
plt.show()
1.1曲线的运动
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
import time
#time calculation start
start=time.perf_counter()
#parameter set
pr={"theta_value_1":10*np.pi/180,"theta_value_2":30*np.pi/180,"chisel edge angle":180*np.pi/180,
"R":0.506/2,"delta0":40*np.pi/180,"rotate_blank":0*np.pi/180}
pr_l={"L1":0.80,"L2":0.60,"L3":4.90}
pr_h1={"delta1":40*np.pi/180,"delta21":55*np.pi/180,"delta22":55*np.pi/180,"delta3":50*np.pi/180}
pr_h2={"delta1":40*np.pi/180,"delta21":40*np.pi/180,"delta22":40*np.pi/180,"delta3":50*np.pi/180}
#function for reading .txt data
def openreadtxt(file_name):
data = []
with open(file_name, 'r') as file:
file_data = file.readlines() # 读取所有行
for row in file_data:
tmp_list = row.split(',')
tmp = [float(x) for x in tmp_list]
data.append(tmp) # 将每行数据插入data中
return data
#file position
filename = r"0.506_0.88_-0.0817_0_delta40_lamda_40_2.txt"
#read data
data = openreadtxt(filename)
#rotate origin data
X = np.array(data)[:, 0]*np.cos(pr["rotate_blank"])+np.array(data)[:, 1]*np.sin(pr["rotate_blank"])
Y = -np.array(data)[:, 0]*np.sin(pr["rotate_blank"])+np.array(data)[:, 1]*np.cos(pr["rotate_blank"])
# define sign
f1, f2, R, delta0, vw,L = sy.symbols('f1 f2 R delta0 vw,L')
rw = sy.Matrix([f1, f2, 0])
k = R / sy.tan(delta0)
#rotation matrix
WtoF = sy.Matrix([[sy.cos(vw), -sy.sin(vw), 0], [sy.sin(vw), sy.cos(vw), 0], [0, 0, 1]])
Trans1 = sy.Matrix([0, 0, k * vw])
Rf_expr = WtoF * rw + Trans1
Rf_fn = sy.lambdify((f1, f2, R, delta0, vw), Rf_expr)
fi=L*sy.tan(delta0)/R
fi_fn=sy.lambdify((L, R, delta0), fi)
l1=np.linspace(0,pr_l["L1"],num=100)[1:-1]
vw1=fi_fn(l1,pr["R"],pr_h1["delta1"])
l2=np.linspace(0,pr_l["L2"],num=100)
if pr_h1["delta21"]==pr_h1["delta22"]:
vw2=fi_fn(l2,pr["R"],pr_h1["delta21"])
else:
d=np.linspace(pr_h1["delta21"],pr_h1["delta22"],num=100)
vw2=[]
for l2i, di in zip(l2, d):
vw2.append(fi_fn(l2i,pr["R"],di))
vw2=np.array(vw2)
l3=np.linspace(0,pr_l["L3"],num=100)[1:-1]
vw3=fi_fn(l3,pr["R"],pr_h1["delta3"])
Rf_1 = []
for xi, yi in zip(X, Y):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta1"], vw1)
Rf_1.append(Rf)
X_1 = X*np.cos(vw1[-1])+Y*np.sin(vw1[-1])
Y_1 = -X*np.sin(vw1[-1])+Y*np.cos(vw1[-1])
Rf_2 = []
#no change2
for xi, yi in zip(X_1, Y_1):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta21"], vw2)
Rf_2.append(Rf)
X_2 = X_1*np.cos(vw2[-1])+Y_1*np.sin(vw2[-1])
Y_2 = -X_1*np.sin(vw2[-1])+Y_1*np.cos(vw2[-1])
Rf_3 = []
for xi, yi in zip(X_2, Y_2):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta3"], vw3)
Rf_3.append(Rf)
Rf_1 = np.array(Rf_1).squeeze()
Rf_2 = np.array(Rf_2).squeeze()
Rf_3 = np.array(Rf_3).squeeze()
end = time.perf_counter()
execution_time = end - start
print(f"代码执行时间:{execution_time}秒")
# fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')
# # 绘制螺旋面
# for Rf in Rf_1:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:])
# for Rf in Rf_2:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:]+pr_l["L1"])
# for Rf in Rf_3:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:]+pr_l["L1"]+pr_l["L2"])
#
# ax.set_xlabel('X')
# ax.set_ylabel('Y')
# ax.set_zlabel('Z')
#
#
# plt.show()
fig = plt.figure(figsize=(5, 5))
plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
clist = ['blue', 'red', 'green', 'black', 'darkgreen', 'lime', 'gold', 'purple', 'green', 'cyan', 'salmon', 'grey',
'mediumvioletred', 'darkkhaki', 'gray', 'darkcyan', 'violet', 'powderblue']
# ==========================================
for Rf in Rf_1:
plt.scatter(Rf[2,:], Rf[1,:])
#no change 2
for Rf in Rf_2:
plt.scatter(Rf[2,:]+pr_l["L1"], Rf[1,:])
for Rf in Rf_3:
plt.scatter(Rf[2,:]+pr_l["L1"]+pr_l["L2"], Rf[1,:])
plt.tight_layout()
plt.show()
1.2两个点的运动
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
import time
#time calculation start
start=time.perf_counter()
#parameter set
pr={"theta_value_1":10*np.pi/180,"theta_value_2":30*np.pi/180,"chisel edge angle":180*np.pi/180,
"R":0.506/2,"delta0":40*np.pi/180,"rotate_blank":0*np.pi/180}
pr_l={"L1":0.80,"L2":0.60,"L3":4.90}
pr_h1={"delta1":40*np.pi/180,"delta21":55*np.pi/180,"delta22":55*np.pi/180,"delta3":50*np.pi/180}
pr_h2={"delta1":40*np.pi/180,"delta21":40*np.pi/180,"delta22":40*np.pi/180,"delta3":50*np.pi/180}
#read data
data = np.array([[1,0],[0,1]])
#rotate origin data
X = np.array(data)[:, 0]*np.cos(pr["rotate_blank"])+np.array(data)[:, 1]*np.sin(pr["rotate_blank"])
Y = -np.array(data)[:, 0]*np.sin(pr["rotate_blank"])+np.array(data)[:, 1]*np.cos(pr["rotate_blank"])
# define sign
f1, f2, R, delta0, vw,L = sy.symbols('f1 f2 R delta0 vw,L')
rw = sy.Matrix([f1, f2, 0])
k = R / sy.tan(delta0)
#rotation matrix
WtoF = sy.Matrix([[sy.cos(vw), -sy.sin(vw), 0], [sy.sin(vw), sy.cos(vw), 0], [0, 0, 1]])
Trans1 = sy.Matrix([0, 0, k * vw])
Rf_expr = WtoF * rw + Trans1
Rf_fn = sy.lambdify((f1, f2, R, delta0, vw), Rf_expr)
fi=L*sy.tan(delta0)/R
fi_fn=sy.lambdify((L, R, delta0), fi)
l1=np.linspace(0,pr_l["L1"],num=100)[1:-1]
vw1=fi_fn(l1,pr["R"],pr_h1["delta1"])
l2=np.linspace(0,pr_l["L2"],num=100)
if pr_h1["delta21"]==pr_h1["delta22"]:
vw2=fi_fn(l2,pr["R"],pr_h1["delta21"])
else:
d=np.linspace(pr_h1["delta21"],pr_h1["delta22"],num=100)
vw2=[]
for l2i, di in zip(l2, d):
vw2.append(fi_fn(l2i,pr["R"],di))
vw2=np.array(vw2)
l3=np.linspace(0,pr_l["L3"],num=1000)[1:-1]
vw3=fi_fn(l3,pr["R"],pr_h1["delta3"])
Rf_1 = []
for xi, yi in zip(X, Y):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta1"], vw1)
Rf_1.append(Rf)
X_1 = X*np.cos(vw1[-1])+Y*np.sin(vw1[-1])
Y_1 = -X*np.sin(vw1[-1])+Y*np.cos(vw1[-1])
Rf_2 = []
#no change2
for xi, yi in zip(X_1, Y_1):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta21"], vw2)
Rf_2.append(Rf)
X_2 = X_1*np.cos(vw2[-1])+Y_1*np.sin(vw2[-1])
Y_2 = -X_1*np.sin(vw2[-1])+Y_1*np.cos(vw2[-1])
Rf_3 = []
for xi, yi in zip(X_2, Y_2):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta3"], vw3)
Rf_3.append(Rf)
Rf_1 = np.array(Rf_1).squeeze()
Rf_2 = np.array(Rf_2).squeeze()
Rf_3 = np.array(Rf_3).squeeze()
end = time.perf_counter()
execution_time = end - start
print(f"代码执行时间:{execution_time}秒")
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制螺旋面
for Rf in Rf_1:
ax.plot(Rf[0,:], Rf[1,:], Rf[2,:])
for Rf in Rf_2:
ax.plot(Rf[0,:], Rf[1,:], Rf[2,:]+pr_l["L1"])
for Rf in Rf_3:
ax.plot(Rf[0,:], Rf[1,:], Rf[2,:]+pr_l["L1"]+pr_l["L2"])
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
# fig = plt.figure(figsize=(5, 5))
# plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
# plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
# clist = ['blue', 'red', 'green', 'black', 'darkgreen', 'lime', 'gold', 'purple', 'green', 'cyan', 'salmon', 'grey',
# 'mediumvioletred', 'darkkhaki', 'gray', 'darkcyan', 'violet', 'powderblue']
# # ==========================================
# for Rf in Rf_1:
# plt.scatter(Rf[2,:], Rf[1,:])
# #no change 2
# for Rf in Rf_2:
# plt.scatter(Rf[2,:]+pr_l["L1"], Rf[1,:])
# for Rf in Rf_3:
# plt.scatter(Rf[2,:]+pr_l["L1"]+pr_l["L2"], Rf[1,:])
# plt.tight_layout()
# plt.show()
2、分三段,第二段螺旋角渐变
第一段:40°
第二段:55°-50°
第三段:50°
2.1曲线的运动
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
import time
#time calculation start
start=time.perf_counter()
#parameter set
pr={"theta_value_1":10*np.pi/180,"theta_value_2":30*np.pi/180,"chisel edge angle":180*np.pi/180,
"R":0.506/2,"delta0":40*np.pi/180,"rotate_blank":0*np.pi/180}
pr_l={"L1":0.80,"L2":0.60,"L3":4.90}
pr_h1={"delta1":40*np.pi/180,"delta21":55*np.pi/180,"delta22":50*np.pi/180,"delta3":50*np.pi/180}
pr_h2={"delta1":40*np.pi/180,"delta21":40*np.pi/180,"delta22":40*np.pi/180,"delta3":50*np.pi/180}
#function for reading .txt data
def openreadtxt(file_name):
data = []
with open(file_name, 'r') as file:
file_data = file.readlines() # 读取所有行
for row in file_data:
tmp_list = row.split(',')
tmp = [float(x) for x in tmp_list]
data.append(tmp) # 将每行数据插入data中
return data
#file position
filename = r"0.506_0.88_-0.0817_0_delta40_lamda_40_2.txt"
#read data
data = openreadtxt(filename)
#rotate origin data
X = np.array(data)[:, 0]*np.cos(pr["rotate_blank"])+np.array(data)[:, 1]*np.sin(pr["rotate_blank"])
Y = -np.array(data)[:, 0]*np.sin(pr["rotate_blank"])+np.array(data)[:, 1]*np.cos(pr["rotate_blank"])
# define sign
f1, f2, R, delta0, vw,L = sy.symbols('f1 f2 R delta0 vw,L')
rw = sy.Matrix([f1, f2, 0])
k = R / sy.tan(delta0)
#rotation matrix
WtoF = sy.Matrix([[sy.cos(vw), -sy.sin(vw), 0], [sy.sin(vw), sy.cos(vw), 0], [0, 0, 1]])
Trans1 = sy.Matrix([0, 0, k * vw])
Rf_expr = WtoF * rw + Trans1
Rf_fn = sy.lambdify((f1, f2, R, delta0, vw), Rf_expr)
fi=L*sy.tan(delta0)/R
fi_fn=sy.lambdify((L, R, delta0), fi)
l1=np.linspace(0,pr_l["L1"],num=100)[1:-1]
vw1=fi_fn(l1,pr["R"],pr_h1["delta1"])
l2=np.linspace(0,pr_l["L2"],num=100)
if pr_h1["delta21"]==pr_h1["delta22"]:
vw2=fi_fn(l2,pr["R"],pr_h1["delta21"])
else:
d=np.linspace(pr_h1["delta21"],pr_h1["delta22"],num=100)
vw2=[]
for l2i, di in zip(l2, d):
vw2.append(fi_fn(l2i,pr["R"],di))
vw2=np.array(vw2)
l3=np.linspace(0,pr_l["L3"],num=100)[1:-1]
vw3=fi_fn(l3,pr["R"],pr_h1["delta3"])
Rf_1 = []
for xi, yi in zip(X, Y):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta1"], vw1)
Rf_1.append(Rf)
X_1 = X*np.cos(vw1[-1])+Y*np.sin(vw1[-1])
Y_1 = -X*np.sin(vw1[-1])+Y*np.cos(vw1[-1])
Rf_2 = []
#change 2
for xi, yi in zip(X_1, Y_1):
Rf_t=[]
for di,vi in zip(d,vw2):
Rf = Rf_fn(xi, yi, pr["R"], di, vi)
Rf_t.append(Rf)
Rf_2.append(Rf_t)
X_2 = X_1*np.cos(vw2[-1])+Y_1*np.sin(vw2[-1])
Y_2 = -X_1*np.sin(vw2[-1])+Y_1*np.cos(vw2[-1])
Rf_3 = []
for xi, yi in zip(X_2, Y_2):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta3"], vw3)
Rf_3.append(Rf)
Rf_1 = np.array(Rf_1).squeeze()
Rf_2 = np.array(Rf_2).squeeze()
Rf_3 = np.array(Rf_3).squeeze()
end = time.perf_counter()
execution_time = end - start
print(f"代码执行时间:{execution_time}秒")
# fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')
# # 绘制螺旋面
# for Rf in Rf_1:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:])
# for Rf in Rf_2:
# ax.plot(Rf[:,0], Rf[:,1], Rf[:,2]+pr_l["L1"])
# for Rf in Rf_3:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:]+pr_l["L1"]+pr_l["L2"])
#
# ax.set_xlabel('X')
# ax.set_ylabel('Y')
# ax.set_zlabel('Z')
#
#
# plt.show()
fig = plt.figure(figsize=(5, 5))
plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
clist = ['blue', 'red', 'green', 'black', 'darkgreen', 'lime', 'gold', 'purple', 'green', 'cyan', 'salmon', 'grey',
'mediumvioletred', 'darkkhaki', 'gray', 'darkcyan', 'violet', 'powderblue']
# ==========================================
for Rf in Rf_1:
plt.scatter(Rf[2,:], Rf[1,:])
#change 2
for Rf in Rf_2:
plt.scatter(Rf[:,2]+pr_l["L1"], Rf[:,1])
for Rf in Rf_3:
plt.scatter(Rf[2,:]+pr_l["L1"]+pr_l["L2"], Rf[1,:])
plt.tight_layout()
plt.show()
2.2两个点的运动
import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
import time
#time calculation start
start=time.perf_counter()
#parameter set
pr={"theta_value_1":10*np.pi/180,"theta_value_2":30*np.pi/180,"chisel edge angle":180*np.pi/180,
"R":0.506/2,"delta0":40*np.pi/180,"rotate_blank":0*np.pi/180}
pr_l={"L1":0.80,"L2":0.60,"L3":4.90}
pr_h1={"delta1":40*np.pi/180,"delta21":55*np.pi/180,"delta22":50*np.pi/180,"delta3":50*np.pi/180}
pr_h2={"delta1":40*np.pi/180,"delta21":40*np.pi/180,"delta22":40*np.pi/180,"delta3":50*np.pi/180}
#read data
data = np.array([[1,0],[0,1]])
#rotate origin data
X = np.array(data)[:, 0]*np.cos(pr["rotate_blank"])+np.array(data)[:, 1]*np.sin(pr["rotate_blank"])
Y = -np.array(data)[:, 0]*np.sin(pr["rotate_blank"])+np.array(data)[:, 1]*np.cos(pr["rotate_blank"])
# define sign
f1, f2, R, delta0, vw,L = sy.symbols('f1 f2 R delta0 vw,L')
rw = sy.Matrix([f1, f2, 0])
k = R / sy.tan(delta0)
#rotation matrix
WtoF = sy.Matrix([[sy.cos(vw), -sy.sin(vw), 0], [sy.sin(vw), sy.cos(vw), 0], [0, 0, 1]])
Trans1 = sy.Matrix([0, 0, k * vw])
Rf_expr = WtoF * rw + Trans1
Rf_fn = sy.lambdify((f1, f2, R, delta0, vw), Rf_expr)
fi=L*sy.tan(delta0)/R
fi_fn=sy.lambdify((L, R, delta0), fi)
l1=np.linspace(0,pr_l["L1"],num=100)[1:-1]
vw1=fi_fn(l1,pr["R"],pr_h1["delta1"])
l2=np.linspace(0,pr_l["L2"],num=700)
if pr_h1["delta21"]==pr_h1["delta22"]:
vw2=fi_fn(l2,pr["R"],pr_h1["delta21"])
else:
d=np.linspace(pr_h1["delta21"],pr_h1["delta22"],num=1000)
vw2=[]
for l2i, di in zip(l2, d):
vw2.append(fi_fn(l2i,pr["R"],di))
vw2=np.array(vw2)
l3=np.linspace(0,pr_l["L3"],num=1000)[1:-1]
vw3=fi_fn(l3,pr["R"],pr_h1["delta3"])
Rf_1 = []
for xi, yi in zip(X, Y):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta1"], vw1)
Rf_1.append(Rf)
X_1 = X*np.cos(vw1[-1])+Y*np.sin(vw1[-1])
Y_1 = -X*np.sin(vw1[-1])+Y*np.cos(vw1[-1])
Rf_2 = []
#change 2
for xi, yi in zip(X_1, Y_1):
Rf_t=[]
for di,vi in zip(d,vw2):
Rf = Rf_fn(xi, yi, pr["R"], di, vi)
Rf_t.append(Rf)
Rf_2.append(Rf_t)
X_2 = X_1*np.cos(vw2[-1])+Y_1*np.sin(vw2[-1])
Y_2 = -X_1*np.sin(vw2[-1])+Y_1*np.cos(vw2[-1])
Rf_3 = []
for xi, yi in zip(X_2, Y_2):
Rf = Rf_fn(xi, yi, pr["R"], pr_h1["delta3"], vw3)
Rf_3.append(Rf)
Rf_1 = np.array(Rf_1).squeeze()
Rf_2 = np.array(Rf_2).squeeze()
Rf_3 = np.array(Rf_3).squeeze()
end = time.perf_counter()
execution_time = end - start
print(f"代码执行时间:{execution_time}秒")
# fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')
# # 绘制螺旋面
# for Rf in Rf_1:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:])
# for Rf in Rf_2:
# ax.plot(Rf[:,0], Rf[:,1], Rf[:,2]+pr_l["L1"])
# for Rf in Rf_3:
# ax.plot(Rf[0,:], Rf[1,:], Rf[2,:]+pr_l["L1"]+pr_l["L2"])
#
# ax.set_xlabel('X')
# ax.set_ylabel('Y')
# ax.set_zlabel('Z')
#
#
# plt.show()
fig = plt.figure(figsize=(5, 5))
plt.rcParams['xtick.direction'] = 'in' # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in' # 将y轴的刻度方向设置向内
clist = ['blue', 'red', 'green', 'black', 'darkgreen', 'lime', 'gold', 'purple', 'green', 'cyan', 'salmon', 'grey',
'mediumvioletred', 'darkkhaki', 'gray', 'darkcyan', 'violet', 'powderblue']
# ==========================================
for Rf in Rf_1:
plt.scatter(Rf[2,:], Rf[1,:])
#change 2
for Rf in Rf_2:
plt.scatter(Rf[:,2]+pr_l["L1"], Rf[:,1])
for Rf in Rf_3:
plt.scatter(Rf[2,:]+pr_l["L1"]+pr_l["L2"], Rf[1,:])
plt.tight_layout()
plt.show()
3、总结
在每一段内,点和曲线是固定不变的,未考虑点和曲线是随螺旋角变化而变化的。