# trajectory.py import numpy as np def circle_trajectory(center=(80, 0), radius=40, num_points=60): """ 圆形轨迹 """ angles = np.linspace(0, 2 * np.pi, num_points) x_list = center[0] + radius * np.cos(angles) y_list = center[1] + radius * np.sin(angles) return x_list, y_list def line_trajectory(start=(40, 0), end=(120, 0), num_points=20): """ 直线轨迹 """ t = np.linspace(0, 1, num_points) x_list = start[0] + t * (end[0] - start[0]) y_list = start[1] + t * (end[1] - start[1]) return x_list, y_list def ellipse_trajectory(center=(80, 0), rx=50, ry=25, num_points=60): """ 椭圆轨迹 """ angles = np.linspace(0, 2 * np.pi, num_points) x_list = center[0] + rx * np.cos(angles) y_list = center[1] + ry * np.sin(angles) return x_list, y_list def square_trajectory(side=60, num_points=60): """ 正方形轨迹 """ x_list, y_list = [], [] for i in range(num_points): t = i / num_points if t < 0.25: x = 80 + 60 * t * 4 y = 0 elif t < 0.5: x = 140 y = 0 + 60 * (t - 0.25) * 4 elif t < 0.75: x = 140 - 60 * (t - 0.5) * 4 y = 60 else: x = 80 y = 60 - 60 * (t - 0.75) * 4 x_list.append(x) y_list.append(y) return x_list, y_list def triangle_trajectory(base_length=100, height=80, num_points=60): """ 三角形轨迹 """ x_list, y_list = [], [] points = [(80, 0), (130, 80), (30, 80), (80, 0)] for i in range(num_points): idx = int(i / num_points * 3) t = (i % (num_points // 3)) / (num_points // 3) x = points[idx][0] + t * (points[idx+1][0] - points[idx][0]) y = points[idx][1] + t * (points[idx+1][1] - points[idx][1]) x_list.append(x) y_list.append(y) return x_list, y_list def custom_trajectory(custom_x, custom_y): """ 自定义轨迹,输入两个列表即可 """ return custom_x, custom_y