basically finished calc

This commit is contained in:
2024-09-07 15:05:46 +08:00
parent ad195eca76
commit cd429d4abf
2 changed files with 6 additions and 6 deletions

View File

@@ -34,7 +34,7 @@ class Loong:
virtual_first_node_idx = first_node_idx + self.delta_idx virtual_first_node_idx = first_node_idx + self.delta_idx
virtual_first_node_C = self.orbit.Idx2C(virtual_first_node_idx) virtual_first_node_C = self.orbit.Idx2C(virtual_first_node_idx)
delta_T = (virtual_first_node_C - first_node_C) / self.speed 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): for i in range(1, self.total_points):
expected_distance = self.kSegLength1 if i == 1 else self.kSegLength2 expected_distance = self.kSegLength1 if i == 1 else self.kSegLength2
cur_node_idx = self.orbit.GenerateNextPointIdx(node_list[-1]["idx"], expected_distance) cur_node_idx = self.orbit.GenerateNextPointIdx(node_list[-1]["idx"], expected_distance)

View File

@@ -105,7 +105,7 @@ class GoodOrbit(Orbit):
def f(idx): def f(idx):
return self.Idx2C(idx) - C 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): def GenerateNextPointIdx(self, cur_point_idx, expected_distance, guess=None):
if guess is None: if guess is None:
@@ -124,7 +124,7 @@ class GoodOrbit(Orbit):
fig = plt.figure(figsize=(12, 12)) 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] x = [float(self.Idx2Cartesian(t)[0]) for t in idx_list]
y = [float(self.Idx2Cartesian(t)[1]) 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) plt.plot(x, y, color='gray', linewidth=0.5)
@@ -182,8 +182,8 @@ if __name__ == "__main__":
orbit = GoodOrbit() orbit = GoodOrbit()
loong = Loong(orbit, 224, mp.mpf("2.0"), mp.mpf("1e-8")) loong = Loong(orbit, 224, mp.mpf("2.0"), mp.mpf("1e-8"))
res_list = [] res_list = []
for ti in range(-10, 2): for ti in range(-100, 101):
print(f"calculating time_point={ti}") print(f"calculating time_point={ti}", file=sys.stderr)
res_list.append(loong.CalcStatusListByTime(mp.mpf(ti))) res_list.append(loong.CalcStatusListByTime(mp.mpf(ti)))
# 转换成内置浮点数并保留6位 # 转换成内置浮点数并保留6位
float_res_list = [[{ float_res_list = [[{
@@ -198,4 +198,4 @@ if __name__ == "__main__":
with open("A4_res.json", "w") as file: with open("A4_res.json", "w") as file:
json.dump(float_res_list, file, indent=4) json.dump(float_res_list, file, indent=4)
img_list = [orbit.GenerateImg(res) for res in res_list] 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)