api:documentation:grafik3d:animation:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
api:documentation:grafik3d:animation:start [2025/03/08 09:00] – [Animation] martin | api:documentation:grafik3d:animation:start [2025/03/08 13:47] (aktuell) – [Beispiel] martin | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
==== Beispiel ==== | ==== Beispiel ==== | ||
- | <WRAP center round tip 80%> | ||
- | </ | ||
- | |||
< | < | ||
<div class=" | <div class=" | ||
<script type=" | <script type=" | ||
+ | double rotationsPerSecond = 0.5; | ||
+ | new OrbitingSphere(new Vector3(1, 0, 0), new Vector3(0, 1, 0), 0, rotationsPerSecond).getMaterial().setColor(0xff0000); | ||
+ | new OrbitingSphere(new Vector3(0, 0, 1), new Vector3(0, 1, 0), 90, rotationsPerSecond).getMaterial().setColor(0x0000ff); | ||
+ | new OrbitingSphere(new Vector3(0, 0, 1), new Vector3(1, 0, 0), 90, rotationsPerSecond * 2).getMaterial().setColor(0x00ff00); | ||
+ | |||
+ | |||
+ | |||
+ | class OrbitingSphere extends Sphere3d { | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | this.v1 = v1; | ||
+ | this.v2 = v2; | ||
+ | this.phaseShift = Math.toRadians(phaseShift); | ||
+ | omega = Math.PI * 2 * rotationsPerSecond / 1000; | ||
+ | scale(0.2); | ||
+ | } | ||
+ | |||
+ | | ||
+ | double angle = phaseShift + System.currentTimeMillis() * omega; | ||
+ | Vector3 position = v1.scaledBy(Math.cos(angle)).add(v2.scaledBy(Math.sin(angle))); | ||
+ | moveTo(position); | ||
+ | } | ||
+ | } | ||
</ | </ | ||
api/documentation/grafik3d/animation/start.1741424438.txt.gz · Zuletzt geändert: 2025/03/08 09:00 von martin