Rendering function
from fdray import *
def render(*args):
return Scene(
Camera(10, 30, view_scale=3, look_at=(0, 3, 0)),
LightSource((1, 30, 40), "white"),
Cylinder((0, 0, 0), (2, 0, 0), 0.02, Color("red")),
Cylinder((0, 0, 0), (0, 6, 0), 0.02, Color("green")),
Cylinder((0, 0, 0), (0, 0, 2), 0.02, Color("blue")),
*args,
).render(width=600, height=300)
cone = Cone(0, 0.4, "1.4*x", 0, Color("silver", 0.8), Finish(specular=0.5))
Translate
render(
cone,
cone.pigment(Color("red")).translate(0, 1, 0),
cone.pigment(Color("green")).translate("2*y"),
cone.pigment(Color("blue")).translate("3*y").translate(1, 0, 0),
cone.pigment(Color("yellow")).translate(-1, 4, 1),
)
Rotate
render(
cone,
cone.pigment(Color("red")).rotate(0, 90, 0).translate("y"),
cone.pigment(Color("green")).rotate(0, -90, 0).translate("2*y"),
cone.pigment(Color("blue")).rotate(0, 0, 90).translate("3*y"),
cone.pigment(Color("yellow")).rotate(0, 0, -90).translate("6*y"),
)
Scale
render(
cone,
cone.pigment(Color("red")).scale(1.2).translate("y"),
cone.pigment(Color("green")).scale(1.2, 0.8, 1.6).translate("2*y"),
cone.pigment(Color("blue")).scale("0.5*x").translate("3*y"),
cone.pigment(Color("yellow")).scale("2*y").translate("4.5*y"),
)
Align
render(
cone,
cone.pigment(Color("red")).align([1, 0, 0]).translate("y"),
cone.pigment(Color("green")).align([0, 1, 0]).translate("2*y"),
cone.pigment(Color("blue")).align([0, 0, 1]).translate("4*y"),
cone.pigment(Color("yellow")).align([1, 1, 1]).translate("5*y"),
)