<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<![CDATA[
ecmascript: function initialize() { Browser.println ('groundColorSunrise length=' + groundColorSunrise.length + ' ' + groundColorSunrise.toString()); Browser.println ('groundColorNoon length=' + groundColorNoon.length + ' ' + groundColorNoon.toString()); Browser.println ('groundColorSunset length=' + groundColorSunset.length + ' ' + groundColorSunset.toString()); Browser.println ('groundColorNight length=' + groundColorNight.length + ' ' + groundColorNight.toString()); Browser.println ('skyColorSunrise length=' + skyColorSunrise.length + ' ' + skyColorSunrise.toString()); Browser.println ('skyColorNoon length=' + skyColorNoon.length + ' ' + skyColorNoon.toString()); Browser.println ('skyColorSunset length=' + skyColorSunset.length + ' ' + skyColorSunset.toString()); Browser.println ('skyColorNight length=' + skyColorNight.length + ' ' + skyColorNight.toString()); } function set_fraction (fraction) // fraction is input value sent by TimeSensor clock { // Sunrise to Noon, fraction 0.0 to 0.25, interval=0.25 if (fraction < 0.25) { groundColor_changed = interpolate (groundColorSunrise, groundColorNoon, fraction, 0.00, 0.25); skyColor_changed = interpolate ( skyColorSunrise, skyColorNoon, fraction, 0.00, 0.25); } // Noon to Evening, fraction 0.25 to 0.5, interval=0.25 else if (fraction < 0.5) { groundColor_changed = interpolate (groundColorNoon, groundColorSunset, fraction, 0.25, 0.25); skyColor_changed = interpolate ( skyColorNoon, skyColorSunset, fraction, 0.25, 0.25); } // Evening to Night, fraction 0.5 to 0.6, interval=0.1 else if (fraction < 0.6) { groundColor_changed = interpolate (groundColorSunset, groundColorNight, fraction, 0.5, 0.1); skyColor_changed = interpolate ( skyColorSunset, skyColorNight, fraction, 0.5, 0.1); } // Night (unchanging), fraction 0.6 to 0.95, interval=0.35 else if (fraction < 0.95) { groundColor_changed = groundColorNight; skyColor_changed = skyColorNight; } // Night to Sunrise, fraction 0.95 to 1.0, interval=0.05 else // (fraction < 1.0) { groundColor_changed = interpolate (groundColorNight, groundColorSunrise, fraction, 0.95, 0.05); skyColor_changed = interpolate ( skyColorNight, skyColorSunrise, fraction, 0.95, 0.05); } // Browser.println ('groundColor_changed=' + groundColor_changed.toString()); // Browser.println (' skyColor_changed=' + skyColor_changed.toString()); } function interpolate (firstColorArray, secondColorArray, fraction, initialFraction, interval) { f = (fraction - initialFraction) / interval; // f should range from 0 to 1 // Browser.println ('initialFraction=' + initialFraction + ', fraction=' + fraction + ', f=' + f); color0 = firstColorArray[0] + (secondColorArray[0] - firstColorArray[0]) * f; color1 = firstColorArray[1] + (secondColorArray[1] - firstColorArray[1]) * f; color2 = firstColorArray[2] + (secondColorArray[2] - firstColorArray[2]) * f; color3 = firstColorArray[3] + (secondColorArray[3] - firstColorArray[3]) * f; color4 = firstColorArray[4] + (secondColorArray[4] - firstColorArray[4]) * f; return new MFColor (color0, color1, color2, color3, color4); }
]]>
Event Graph ROUTE Table entries with 3 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.
TimeOfDayClock
TimeSensor fraction_changed SFFloat |
BackgroundColorInterpolator
Script set_fraction SFFloat |
then
|
BackgroundColorInterpolator
Script groundColor_changed MFColor |
AnimatedBackground
Background groundColor MFColor |
||
then
|
BackgroundColorInterpolator
Script skyColor_changed MFColor |
AnimatedBackground
Background skyColor MFColor |
BackgroundColorInterpolator
Script groundColor_changed MFColor |
AnimatedBackground
Background groundColor MFColor |
|
BackgroundColorInterpolator
Script skyColor_changed MFColor |
AnimatedBackground
Background skyColor MFColor |
<!--
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)
-->
<!--
For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints.
-->