35 lines
1006 B
Python
35 lines
1006 B
Python
|
|
from collections import deque
|
|
import math
|
|
|
|
from lib import get_rotate_x_matrix, get_rotate_z_matrix
|
|
|
|
g_steps = 20
|
|
|
|
raise_angle = 3
|
|
twist_x_angle = 20
|
|
twise_y_angle = 12
|
|
|
|
def path_generator():
|
|
assert (g_steps % 4) == 0
|
|
|
|
result = []
|
|
|
|
quarter = int(g_steps / 4)
|
|
step_x_angle = twist_x_angle / quarter
|
|
step_y_angle = twise_y_angle / quarter
|
|
|
|
m = get_rotate_x_matrix(raise_angle)
|
|
for i in range(quarter):
|
|
result.append(m * get_rotate_z_matrix(i*step_x_angle) * get_rotate_x_matrix(i*step_y_angle))
|
|
|
|
for i in range(quarter):
|
|
result.append(m * get_rotate_z_matrix((quarter-i)*step_x_angle) * get_rotate_x_matrix((quarter-i)*step_y_angle))
|
|
|
|
for i in range(quarter):
|
|
result.append(m * get_rotate_z_matrix(-i*step_x_angle) * get_rotate_x_matrix(i*step_y_angle))
|
|
|
|
for i in range(quarter):
|
|
result.append(m * get_rotate_z_matrix((-quarter+i)*step_x_angle) * get_rotate_x_matrix((quarter-i)*step_y_angle))
|
|
|
|
return result, "matrix", 50, [0, 10] |