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
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
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 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))
|