编程部分(python)
2.1、设计python程序,输入字符串类型的数字运算,解析输出结果.计算两个数加减乘除。
源代码:
print("Please input string")
a=input("input:")
if (type(a)==str):
print(eval(a))
else:
print("wrong input")
几个函数:
1、input:
input([prompt])
prompt为输入提示信息
2、type:
type(object)
object为输入对象,函数返回对象类型
3、eval:
eval函数用来执行一个字符串表达式,并返回表达式的值。
#示例
x = 7
eval( '3 * x' )
21
运行结果:
2.2、使用python或c语言设计程序,已知三个控制点坐标(x1,y1)(x2,y2)(x3,y3),规划一条路径,要求从(x1,y1)开始到(x3,y3)结束,这段路径必须连续可导,并且路径必须包含(x1,y1)(x2,y2)(x3,y3),其次每两个控制点之间的离散路径点的点间距需要是近乎固定的,这个点间距的参数是可以传参来调整的
代码:
import numpy as np
import matplotlib.pyplot as plt
#规定必定经过的点:(0,0)、(3,4)、(6,0)
#另外还规定了4个控制贝塞尔曲线光滑程度的点
P0, P1, P2, P3, P4, P5, P6= np.array([
[0, 0],
[-15/22, 20/22],
[1.5, 4],
[3, 4],
[4.5, 4],
[6+15/22, 20/22],
[6, 0]
])
#define two bezier curves
F1 = lambda t: P0 * (1-t)**3 + 3 * P1 * t * (1-t)**2 + 3 * P2 * t **2*(1-t) + P3 * t**3
F2 = lambda t: P3 * (1-t)**3 + 3 * P4 * t * (1-t)**2 + 3 * P5 * t **2*(1-t) + P6 * t**3
#evaluate the curve on [0,1] sliced in 50 points
points1 = np.array([F1(t) for t in np.linspace(0,1,50)])
points2 = np.array([F2(t) for t in np.linspace(0,1,50)])
x1,y1 = points1[:,0], points1[:,1]
x2,y2 = points2[:,0], points2[:,1]
plt.plot(x1,y1,'o')
plt.plot(x2,y2,'o')
plt.plot(*P0,'r.')
plt.plot(*P1,'r.')
plt.plot(*P2,'r.')
plt.plot(*P3,'r.')
plt.plot(*P4,'r.')
plt.plot(*P5,'r.')
plt.plot(*P6,'r.')
plt.show()
解释一下,我使用的是2段3阶贝塞尔曲线最后拼接成一个光滑的轨迹,(x1,y1)、(x2,y2)、(x3,y3)分别为(0,0)、(3,4)、(6,0)
运行结果:
换成散点图:
点的个数减小:
参考网站:
- https://www.jb51.net/article/177375.htm
- https://baijiahao.baidu.com/s?id=1665653315494226271&wfr=spider&for=pc