本来打算直接写一个数控系统可视化的 python 程序的,但是发现难度比较大(主要在圆弧编程方面),所以就准备从头开始写吧。

详细的思路请参见数控技术 - 直线插补 - 逐点比较法,我就直接解释我写的代码了。

代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import math

# 起点终点坐标
start = (-8, -3)
end = (2, -5)
k = 1
xs, ys = start[0] * k, start[1] * k
xe, ye = end[0] * k, end[1] * k

# 平移至(0,0)
xss = xs - xs
yss = ys - ys
xee = xe - xs
yee = ye - ys
print((xss, yss), (xee, yee))

# 偏差
f = xe * yss - xss * ye

# 总步数
step = abs(xee) + abs(yee)

# 中间点
xi, yi = xs, ys

# 特殊:Y轴+-
if xee == 0:
for i in range(int(step)):
if yee > 0:
yi = yi + 1
else:
yi = yi - 1
print((xi/k, yi/k))
else:
# 第一象限
if xee > 0 and yee > 0:
dx, dy = 1, 1
# 第二象限
elif xee < 0 and yee > 0:
dx, dy = -1, 1
# 第三象限
elif xee < 0 and yee < 0:
dx, dy = -1, -1
# 第四象限
elif xee > 0 and yee < 0:
dx, dy = 1, -1
# f>=0沿x轴进给;f<0沿y轴进给
for i in range(int(step)):
if f >= 0:
f = f - yee * dy
xi = xi + dx
else:
f = f + xee * dx
yi = yi + dy
print((xi/k, yi/k))

网站地图 | 状态监测 | 图片加密&解密 | File Server | 博友圈 | 博客说
Copyright 2022-2025 | Powered by Hexo 7.3.0 & Stellar 1.29.1
总访问量次 |