import k3d
import k3d.platonic as platonic
import math
import numpy as np
plot = k3d.plot(auto_rendering=False, grid_auto_fit=False, grid_visible=False)
plot.display()
Output()
colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff]
for j in range(5):
meshes = [
platonic.Dodecahedron().mesh,
platonic.Cube().mesh,
platonic.Icosahedron().mesh,
platonic.Octahedron().mesh,
platonic.Tetrahedron().mesh
]
for i, obj in enumerate(meshes):
obj.color = colors[i]
plot += obj
for time in np.linspace(0, 4 * np.pi, 120):
k = 0
for j in range(5):
for i in range(len(meshes)):
rad = math.radians(i / len(meshes) * 360)
radius = 3.5
t = k3d.transform()
t.translation = [math.sin(rad + time) * radius, math.cos(rad + time) * radius, 2.5*j]
t.rotation = [j + time, 0, 0, 1]
plot.objects[k].model_matrix = t.model_matrix
k += 1
plot.render()
plot = k3d.plot()
plot.display()
colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff]
for j in range(5):
meshes = [
platonic.Dodecahedron().mesh,
platonic.Cube().mesh,
platonic.Icosahedron().mesh,
platonic.Octahedron().mesh,
platonic.Tetrahedron().mesh
]
for i, obj in enumerate(meshes):
rad = math.radians(i / len(meshes) * 360)
radius = 3.5
model_matrix = {}
for time in np.linspace(0, 2 * np.pi, 60):
t = k3d.transform()
t.translation = [math.sin(rad + time) * radius, math.cos(rad + time) * radius, 2.5*j]
t.rotation = [time - j, 0, 0, 1]
model_matrix[str(time)] = t.model_matrix
obj.model_matrix = model_matrix
obj.color = colors[i]
plot += obj
Output()
plot.grid_auto_fit = False
plot.camera_auto_fit = False
plot.start_auto_play()
plot.stop_auto_play()