----------------------------------------------------------------------- -- An example of Actor Prolog program. -- -- (c) 2012 IRE RAS Alexei A. Morozov -- ----------------------------------------------------------------------- import .. from "morozov/Java3D"; class 'Main' (specialized 'Canvas3D'): -- internal: -- text_tools = ('Text'); -- constant: -- enable_scene_antialiasing = 'yes'; -- [ goal:-!, Text== "Actor Prolog", SL== text_tools?length(Text), Scale== 1.2 / SL, X== - (SL) / 2.0, MaximumAngle== ?pi()*2.0, Bounds== 'BoundingSphere'({ center: p(0.0,0.0,0.0), radius: 100.0 }), show([ 'TransformGroup'({ transform3D: 'Transform3D'({ scale: Scale }), branches: [ 'TransformGroup'({ allowTransformWrite: 'yes', allowTransformRead: 'yes', branches: [ 'Shape3D'({ geometry: 'Text3D'({ font3D: 'Font3D'({ fontName: 'helvetica', fontSize: 2, fontStyle: [], extrudePath: 'FontExtrusion'({}) }), string: Text, position: p(X,-1,-1), horizontalAlignment: 'ALIGN_FIRST', path: 'PATH_RIGHT', characterSpacing: 0.0 }), appearance: 'Appearance'({ material: 'Material'({ lightingEnable: 'yes' }) }) }), 'RotationInterpolator'({ alpha: 'Alpha3D'({ loopCount: -1, increasingEnable: 'yes', increasingAlphaDuration: 4000 }), transformAxis: 'Transform3D'({}), minimumAngle: 0.0, maximumAngle: MaximumAngle, schedulingBounds: Bounds }) ] }) ] }), 'Background'({ color: color3(0.05,0.05,0.5), applicationBounds: Bounds }), 'AmbientLight'({ color: color3(0.3,0.3,0.3), influencingBounds: Bounds }), 'DirectionalLight'({ color: color3(1.0,1.0,0.9), direction: [1.0,1.0,1.0], influencingBounds: Bounds }), 'DirectionalLight'({ color: color3(1.0,1.0,0.9), direction: [-1.0,-1.0,-1.0], influencingBounds: Bounds }), 'OrbitBehavior'({ reverseAll: 'yes', stopZoom: 'yes', minRadius: 1.5, schedulingBounds: Bounds }) ]). ] |