Minor improvements
authorLukáš Jiřiště <lukas.jiriste@datapartner.cz>
Fri, 5 Dec 2025 12:55:41 +0000 (13:55 +0100)
committerLukáš Jiřiště <lukas.jiriste@datapartner.cz>
Fri, 5 Dec 2025 12:55:41 +0000 (13:55 +0100)
animate_result.py
nbody.mo
script.mos

index 556d579e397b5d3f85426e78e134d0d3709a6ba2..fc4956515343089e3f9e26870b52943b16e65a59 100755 (executable)
@@ -22,6 +22,9 @@ class MatAnimation:
         self.lines = [];
         self.fig = plt.figure();
         self.axes = self.fig.add_subplot(projection="3d");
+        self.axes.set_xlabel("x");
+        self.axes.set_ylabel("y");
+        self.axes.set_zlabel("z");
 
     def plot(self, name_x, name_y, name_z):
         line, = self.axes.plot(
@@ -44,10 +47,12 @@ class MatAnimation:
 
     def update(self, frame):
         for line in self.lines:
+            from_frame = 0;
+            to_frame = frame;
             line.line.set_data([
-                self.data[line.name_x][:frame],
-                self.data[line.name_y][:frame]]);
-            line.line.set_3d_properties(self.data[line.name_z][:frame]);
+                self.data[line.name_x][from_frame:to_frame],
+                self.data[line.name_y][from_frame:to_frame]]);
+            line.line.set_3d_properties(self.data[line.name_z][from_frame:to_frame]);
         return [line.line for line in self.lines];
 
 def transpose_strings(array):
@@ -72,7 +77,7 @@ def matAniFromFile(filename):
 
 
 ani = matAniFromFile(sys.argv[1]);
-for i in range(1,10):
+for i in range(1,11):
     ani.plot(
         "p[" + str(i) + "].pos[1]",
         "p[" + str(i) + "].pos[2]",
index ef1ef5e0ebd5ca404d2c67c44365032014d8730f..d7f81b1001fb23930dafb8cff0fe9d3eca9d9687 100644 (file)
--- a/nbody.mo
+++ b/nbody.mo
@@ -38,12 +38,12 @@ package nbody
 
        initial equation
                for i in 1:N loop
-                       p[i].pos[1] = (i / N) ^ 2;
-                       p[i].pos[2] = ((i - 1) / N) ^ 2;
-                       p[i].pos[3] = 0;
-                       p[i].speed[1] = 0;
-                       p[i].speed[2] = 0;
-                       p[i].speed[3] = 0;
+                       p[i].pos[1] = sin(i);
+                       p[i].pos[2] = cos(i);
+                       p[i].pos[3] = sin(3 * i);
+                       p[i].speed[1] = cos(2 * i);
+                       p[i].speed[2] = sin(3 * i);
+                       p[i].speed[3] = cos(i);
                end for;
 
        equation
index 6be1b36993db749379ec156e2b4f974fafd4de3c..17bb71cb505e2b26cf2c7ed5b8b47c4b68b86235 100644 (file)
@@ -1,3 +1,3 @@
 loadFile("nbody.mo");
 instantiateModel(System);
-simulate(nbody.System, numberOfIntervals = 5000);
+simulate(nbody.System, numberOfIntervals = 5000, startTime = 0, stopTime = 50);