From cd429d4abfd98f42e11c85764a7fa5bbb82ffc1b Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Sat, 7 Sep 2024 15:05:46 +0800 Subject: [PATCH] basically finished calc --- A/4/loong.py | 2 +- A/4/simulator.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/A/4/loong.py b/A/4/loong.py index 8ec53db..61e7def 100644 --- a/A/4/loong.py +++ b/A/4/loong.py @@ -34,7 +34,7 @@ class Loong: virtual_first_node_idx = first_node_idx + self.delta_idx virtual_first_node_C = self.orbit.Idx2C(virtual_first_node_idx) delta_T = (virtual_first_node_C - first_node_C) / self.speed - node_list = [{"idx": first_node_idx, "node": first_node_dot, "C": first_node_C, "v": mp.mpf('1.0')}] + node_list = [{"idx": first_node_idx, "node": first_node_dot, "C": first_node_C, "v": self.speed}] for i in range(1, self.total_points): expected_distance = self.kSegLength1 if i == 1 else self.kSegLength2 cur_node_idx = self.orbit.GenerateNextPointIdx(node_list[-1]["idx"], expected_distance) diff --git a/A/4/simulator.py b/A/4/simulator.py index 862fba0..99670da 100644 --- a/A/4/simulator.py +++ b/A/4/simulator.py @@ -105,7 +105,7 @@ class GoodOrbit(Orbit): def f(idx): return self.Idx2C(idx) - C - return mp.findroot(f, 0, solver='secant') + return mp.findroot(f, (-100*2*mp.pi,100*2*mp.pi), solver='bisect') def GenerateNextPointIdx(self, cur_point_idx, expected_distance, guess=None): if guess is None: @@ -124,7 +124,7 @@ class GoodOrbit(Orbit): fig = plt.figure(figsize=(12, 12)) # 绘制轨道线 - idx_list = np.linspace(-8 * 2 * np.pi, 8 * 2 * np.pi, 10000) + idx_list = np.linspace(-12 * 2 * np.pi, 8 * 2 * np.pi, 10000) x = [float(self.Idx2Cartesian(t)[0]) for t in idx_list] y = [float(self.Idx2Cartesian(t)[1]) for t in idx_list] plt.plot(x, y, color='gray', linewidth=0.5) @@ -182,8 +182,8 @@ if __name__ == "__main__": orbit = GoodOrbit() loong = Loong(orbit, 224, mp.mpf("2.0"), mp.mpf("1e-8")) res_list = [] - for ti in range(-10, 2): - print(f"calculating time_point={ti}") + for ti in range(-100, 101): + print(f"calculating time_point={ti}", file=sys.stderr) res_list.append(loong.CalcStatusListByTime(mp.mpf(ti))) # 转换成内置浮点数并保留6位 float_res_list = [[{ @@ -198,4 +198,4 @@ if __name__ == "__main__": with open("A4_res.json", "w") as file: json.dump(float_res_list, file, indent=4) img_list = [orbit.GenerateImg(res) for res in res_list] - img_list[0].save("A4.gif", save_all=True, append_images=img_list[1:], duration=1000, loop=0) + img_list[0].save("A4.gif", save_all=True, append_images=img_list[1:], duration=100, loop=0)