2017-02-03 4 views
0

Diese answer bietet eine gute Möglichkeit, sanfte Animationen in SciLab zu erstellen. Ich muss nun eine Simulation eines an zwei Saiten befestigten Körpers schreiben (und damit seine Bewegung bezüglich einiger zusätzlicher Kräfte).Glatte Animation von drei Formen in SciLab

Der Code in der Verbindung funktioniert gut, um die Bewegung eines einzelnen Punktes zu rendern, und leider schaffte ich es nicht, eine Animation von einem Punkt + zwei Linien mit dieser Methode zu machen. Wenn jemand neugierig ist, habe ich versucht, diesen Code, es zu tun:

frametime=(tk-t0)/Nt//defining the waitnig time 

plot(Y(1,1),Y(2,1),"o")//plotting the point 
plot([0;Y(1,1)],[0;Y(2,1)],style=1) 
plot([D;Y(1,1)],[0;Y(2,1)],style=1)//plotting the two initial lines 
h1_compound = gce(); 
h_point=h1_compound.children 
h_point.mark_size = 20; 
h_point.mark_background = 2; 
h_line1=h_compound.children 
h_line2=h_compound.children 
//h_axes = gca(); 
//h_axes.data_bounds = [0,-1;10,1]; 
realtimeinit(frametime); 
for i=1:Nt//my vectors have Nt points 
    realtime(i);//wait "frametime" seconds before drawing the new position 
    h_point.data=[Y(1,i),Y(2,i)]; 
    h_line1.data=[[0;Y(1,i)],[0;Y(2,i)]] 
    h_line2.data=[[D;Y(1,i)],[0;Y(2,i)]] 
end 

Die Frage ist: Gibt es eine Möglichkeit, um eine Animation von drei Formen zu machen, ohne Achsen blinken (wie es mit dem Fenster Erfrischung ist) oder andere seltsames Zeug?

Antwort

0

Da Sie kein MCVE erstellt haben, kann ich Ihr genaues Problem nicht reproduzieren. Aber Sie können versuchen, drawlater(); vor und drawnow(); nach Ihrer Datenänderung hinzuzufügen, um zu sehen, ob es beim Blinken hilft oder nicht.

Oder Sie können viel besser aussehende Ergebnis erhalten, indem Sie Ihre Plots in jeder Runde mit xs2gif speichern und die Animation mit einem anderen GIFMaker-Programm zusammenstellen (es gibt kostenlose Online-Sites, um dies zu tun, jedoch mit einigen Einschränkungen). Wenn Sie Ihr Ergebnis präsentieren müssen, sollten Sie diesen Schritt trotzdem tun.