<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<![CDATA[
ecmascript: function initialize( ) { generateCrossSection( ); generateSpine( ); } function set_crossSectionRadius( csr, ts ) { crossSectionRadius = csr; // Browser.println ('crossSectionRadius =' + crossSectionRadius); generateCrossSection( ); } function set_spineRadius( sr, ts ) { spineRadius = sr; // Browser.println ('spineRadius =' + spineRadius); generateSpine( ); } function generateCrossSection( ) { newCrossSection = new MFVec2f(); // temporary hold variable angle = 0.0; delta = 6.28 / crossSectionResolution; for ( i = 0; i <= crossSectionResolution + 1; i++ ) { newCrossSection[i][0] = crossSectionRadius * Math.cos( angle ); newCrossSection[i][1] = -crossSectionRadius * Math.sin( angle ); angle += delta; } // make ends meet newCrossSection[crossSectionResolution + 1][0] = newCrossSection[0][0]; newCrossSection[crossSectionResolution + 1][1] = newCrossSection[0][1]; crossSection_changed = newCrossSection; } function generateSpine( ) { newSpine = new MFVec3f(); // temporary hold variable angle = 0.0; delta = (2 * 3.141592653) / spineResolution; for ( i = 0; i <= spineResolution; i++ ) { newSpine[i][0] = spineRadius * Math.cos( angle ); newSpine[i][1] = 0.0; newSpine[i][2] = -spineRadius * Math.sin( angle ); angle += delta; } // make ends meet newSpine[spineResolution + 1][0] = newSpine[0][0]; newSpine[spineResolution + 1][1] = 0.0; newSpine[spineResolution + 1][2] = newSpine[0][2]; spine_changed = newSpine; }
]]>
Event Graph ROUTE Table with 2 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
DonutMakerInternalScript
Script spine_changed MFVec3f |
DonutExtrusion
Extrusion set_spine MFVec3f |
|
DonutMakerInternalScript
Script crossSection_changed MFVec2f |
DonutExtrusion
Extrusion set_crossSection MFVec2f |
<!--
Online at
https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter31Prototypes/Figure31_6DonutPrototypeIndex.html
-->
<!--
Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter31Prototypes/Figure31_6DonutPrototype.x3d
-->
<!--
Color legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
<ProtoDeclare
name='ProtoName'>
<field
name='fieldName'/> </ProtoDeclare>
-->
<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->