let my-scene:Scene={Scene}my-scene.add-object red-quad}let color-change:EventHandler =
{on PointerPressSceneEvent at quad:Quad do
set quad.fill-pattern = >new-color
}
{my-quad.add-event-handler color-change}let color-change:EventHandler =
{on PointerPressSceneEvent at quad:Quad do
set quad.fill-pattern = >new-color
}
{my-quad.add-event-handler color-change}let spin-group:SceneGroup =
{SceneGroup
obj1,
obj2,
obj3
}
{my-scene.add-object spin-group}
{spin-group.rotate {Direction3d 0, 0, 1}, 10 degrees}{curl 5.0 applet}
{import * from CURL.GRAPHICS.SCENE}
|| A procedure for generating random colors.
{let random:Random = {Random}}
{define-proc {random-color}:Color
{return
{Color.from-rgb
{random.next-float},{random.next-float},{random.next-float}
}
}
}
{value
|| The scene that holds all the triangles.
let scene:Scene =
{Scene
camera =
{Camera
position = {Distance3d 0in, -2in, 3in},
direction = {Direction3d 1, 1, -1},
up-vector = {Direction3d 0, 0, 1},
field-of-view = 90degrees,
near-clipping-plane = .1in,
far-clipping-plane = 50in,
projection = Projection.perspective
}
}
|| This event handler sets the color of the triangle that is hit
|| to a random color and rotates the triangle's group
let event-handler:EventHandler =
{on event:PointerPressSceneEvent at tri:Triangle do
set tri.fill-pattern = {random-color}
{tri.parent.rotate {Direction3d 0, 0, 1}, 15degrees}
}
|| Add the triangles to the scene as a grid.
{for x:Distance = 0in to 5in step 1in do
let group:SceneGroup = {SceneGroup}
let color:Color = {random-color}
{for y:Distance = -2in to 2in step 1in do
{group.add-object
{Triangle
{Distance3d 0in, y, 0in},
{Distance3d 0.5in, y, 0in},
{Distance3d 0in, y + 0.5in, 0in},
fill-pattern = color,
event-handler
}
}
}
{group.translate x, 0in, 0in}
{scene.add-object group}
}
|| SceneGraphic displays the scene on the page.
{SceneGraphic
width = 5in,
height = 5in,
background = {FillPattern.get-black},
scene
}
}
One question not yet answered here is: