<?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">
<X3D profile='Interchange'  version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.0.xsd ' >
<head>
<meta name='titlecontent=' LaserPrinter.x3d '/>
<meta name='creatorcontent='Harold W. Valentine'/>
<meta name='createdcontent='22 August 2000'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='descriptioncontent='How a laser printer works'/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/LaserPrinter.x3d '/>
<meta name='Imagecontent='BottomFuserRoller.jpg' />
<meta name='Imagecontent='PaperRoller.gif' />
<meta name='Imagecontent='PaperRoller.jpg' />
<meta name='Imagecontent='ReverseText.jpg' />
<meta name='Imagecontent='Text.jpg' />
<meta name='Imagecontent='TopFuser.jpg' />
<meta name='Imagecontent='TopFuserRoller.gif' />
<meta name='Imagecontent='chargeroller.jpg' />
<meta name='Imagecontent='chipset.jpg' />
<meta name='Imagecontent='mirror.jpg' />
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<WorldInfo title='LaserPrinter.x3d'/>
<Viewpoint description='LaserPrinterorientation='-0.590284 0.769274 0.244504 0.987861position='10 10 10'/>
<Group>
<Transform rotation='0 0 1 1.57079translation='0 -0.85 -3.75'>
<Shape>
<Appearance>
<Material diffuseColor='0 0 1'/>
</Appearance>
<Cylinder height='6radius='.03'/>
</Shape>
</Transform>
<Transform translation='0 0.05 0'>
<Transform rotation='0 0 1 1.57079translation='-3 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='0.3 0.3 0.3shininess='0.6specularColor='1 1 1'/>
</Appearance>
<Cylinder height='.1'/>
</Shape>
</Transform>
<Transform rotation='0 0 1 1.57079translation='3 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='0.3 0.3 0.3shininess='0.6specularColor='1 1 1'/>
</Appearance>
<Cylinder height='.1'/>
</Shape>
</Transform>
</Transform>
<Transform rotation='0 0 1 1.57079translation='0 .1 -1.75'>
<Shape>
<Appearance>
<Material diffuseColor='0.5 0.5 0.5'/>
</Appearance>
<Box size='.75 6 .75'/>
</Shape>
</Transform>
<Group>
<!-- ROUTE information for ChargeRollerTimer node:  [from fraction_changed to ChargeRollerOr.set_fraction ] -->
<TimeSensor DEF='ChargeRollerTimercycleInterval='10loop='true'/>

<!-- ROUTE information for ChargeRollerOr node:  [from ChargeRollerTimer.fraction_changed to set_fraction ] [from value_changed to ChargeRoller.rotation ] -->
<OrientationInterpolator DEF='ChargeRollerOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='0 1 0 6.283185307 0 1 0 5.497787144 0 1 0 4.71238898 0 1 0 3.926990817 0 1 0 3.141592654 0 1 0 2.35619449 0 1 0 1.570796327 0 1 0 0.7854163 0 1 0 0'/>
</Group>
<Transform rotation='0 0 1 1.57079translation='0 0.1 -1.25'>
<!-- ROUTE information for ChargeRoller node:  [from ChargeRollerOr.value_changed to rotation ] -->
<Transform DEF='ChargeRoller'>
<Shape>
<Appearance>
<Material diffuseColor='0.5 0.5 1'/>
<ImageTexture
  url=' "chargeroller.jpg " "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/chargeroller.jpg " ' />
</Appearance>
<Cylinder height='6radius='.25'/>
</Shape>
</Transform>
</Transform>
<Transform rotation='0 0 1 1.57079translation='0 -0.215 -1.25'>
<Shape>
<Appearance>
<Material diffuseColor='0.6 0.25 0.25'/>
</Appearance>
<Box size='.12 6 .25'/>
</Shape>
</Transform>
<Group>
<!-- ROUTE information for TopFuserTimer node:  [from fraction_changed to TopFuserOr.set_fraction ] -->
<TimeSensor DEF='TopFuserTimercycleInterval='10loop='true'/>

<!-- ROUTE information for TopFuserOr node:  [from TopFuserTimer.fraction_changed to set_fraction ] [from value_changed to TopFuser.rotation ] -->
<OrientationInterpolator DEF='TopFuserOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='0 1 0 0 0 1 0 0.7854163 0 1 0 1.570796327 0 1 0 2.35619449 0 1 0 3.141592654 0 1 0 3.926990817 0 1 0 4.71238898 0 1 0 5.497787144 0 1 0 6.283185307'/>
</Group>
<Transform rotation='0 0 1 1.57079translation='0 -.68 3'>
<!-- ROUTE information for TopFuser node:  [from TopFuserOr.value_changed to rotation ] -->
<Transform DEF='TopFuser'>
<Shape>
<Appearance>
<Material diffuseColor='0 1 1'/>
<ImageTexture
  url=' "TopFuserRoller.gif " "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/TopFuserRoller.jpg " ' />
</Appearance>
<Cylinder height='6radius='.25'/>
</Shape>
</Transform>
</Transform>
<Group>
<!-- ROUTE information for BottomFuserTimer node:  [from fraction_changed to BottomFuserOr.set_fraction ] -->
<TimeSensor DEF='BottomFuserTimercycleInterval='10loop='true'/>

<!-- ROUTE information for BottomFuserOr node:  [from BottomFuserTimer.fraction_changed to set_fraction ] [from value_changed to BottomFuser.rotation ] -->
<OrientationInterpolator DEF='BottomFuserOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='0 1 0 6.283185307 0 1 0 5.497787144 0 1 0 4.71238898 0 1 0 3.926990817 0 1 0 3.141592654 0 1 0 2.35619449 0 1 0 1.570796327 0 1 0 0.7854163 0 1 0 0'/>
</Group>
<Transform rotation='0 0 1 1.57079translation='0 -1.2 3'>
<!-- ROUTE information for BottomFuser node:  [from BottomFuserOr.value_changed to rotation ] -->
<Transform DEF='BottomFuser'>
<Shape>
<Appearance> </Appearance>
<Cylinder height='6radius='.25'/>
</Shape>
</Transform>
</Transform>
<Group>
<!-- ROUTE information for TopPaperTimer node:  [from fraction_changed to TopPaperOr.set_fraction ] -->
<TimeSensor DEF='TopPaperTimercycleInterval='10loop='true'/>

<!-- ROUTE information for TopPaperOr node:  [from TopPaperTimer.fraction_changed to set_fraction ] [from value_changed to TopPaper.rotation ] -->
<OrientationInterpolator DEF='TopPaperOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='0 1 0 0 0 1 0 0.7854163 0 1 0 1.570796327 0 1 0 2.35619449 0 1 0 3.141592654 0 1 0 3.926990817 0 1 0 4.71238898 0 1 0 5.497787144 0 1 0 6.283185307'/>
</Group>
<Transform rotation='0 0 1 1.57079translation='0 -0.68 -3'>
<!-- ROUTE information for TopPaper node:  [from TopPaperOr.value_changed to rotation ] -->
<Transform DEF='TopPaper'>
<Shape>
<Appearance> </Appearance>
<Cylinder height='6radius='.25'/>
</Shape>
</Transform>
</Transform>
<Group>
<!-- ROUTE information for BottomPaperTimer node:  [from fraction_changed to BottomPaperOr.set_fraction ] -->
<TimeSensor DEF='BottomPaperTimercycleInterval='10loop='true'/>

<!-- ROUTE information for BottomPaperOr node:  [from BottomPaperTimer.fraction_changed to set_fraction ] [from value_changed to BottomPaper.rotation ] -->
<OrientationInterpolator DEF='BottomPaperOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='0 1 0 6.283185307 0 1 0 5.497787144 0 1 0 4.71238898 0 1 0 3.926990817 0 1 0 3.141592654 0 1 0 2.35619449 0 1 0 1.570796327 0 1 0 0.7854163 0 1 0 0'/>
</Group>
<Transform rotation='0 0 1 1.57079translation='0 -1.2 -3'>
<!-- ROUTE information for BottomPaper node:  [from BottomPaperOr.value_changed to rotation ] -->
<Transform DEF='BottomPaper'>
<Shape>
<Appearance>
<Material diffuseColor='1 1 0'/>
<ImageTexture USE=' paperroller'/>
</Appearance>
<Cylinder height='6radius='.25'/>
</Shape>
</Transform>
</Transform>
<Transform rotation='0 0 1 1.57079translation='0 -.94 3'>
<Shape>
<Appearance>
<Material diffuseColor='1 1 1'/>
<ImageTexture
  url=' "Text.jpg " "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/Text.jpg " ' />
</Appearance>
<Box size='.02 6 8'/>
</Shape>
</Transform>
<Transform rotation='0 0 1 1.57079translation='0 -.94 -3.5'>
<Shape>
<Appearance>
<Material diffuseColor='1 1 1'/>
</Appearance>
<Box size='.02 6 2'/>
</Shape>
</Transform>
<Transform rotation='0 0 1 1.57079translation='0 2 -3.5'>
<Shape>
<Appearance>
<Material diffuseColor='0 0 1'/>
</Appearance>
<Box size='.5 1.5 2'/>
</Shape>
</Transform>
<Group>
<!-- ROUTE information for MirrorTimer node:  [from fraction_changed to MirrorOr.set_fraction ] -->
<TimeSensor DEF='MirrorTimercycleInterval='0.1loop='true'/>

<!-- ROUTE information for MirrorOr node:  [from MirrorTimer.fraction_changed to set_fraction ] [from value_changed to Mirror.rotation ] -->
<OrientationInterpolator DEF='MirrorOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='0 1 0 6.283185307 0 1 0 5.497787144 0 1 0 4.71238898 0 1 0 3.926990817 0 1 0 3.141592654 0 1 0 2.35619449 0 1 0 1.570796327 0 1 0 0.7854163 0 1 0 0'/>
</Group>
<!-- ROUTE information for Mirror node:  [from MirrorOr.value_changed to rotation ] -->
<Transform DEF='Mirrortranslation='0 2 2'>
<Shape>
<Appearance>
<Material diffuseColor='.5 .5 .5'/>
<ImageTexture
  url=' "mirror.jpg " "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/mirror.jpg " ' />
</Appearance>
<Cylinder height='.5radius='.5'/>
</Shape>
</Transform>
<Transform rotation='1 0 0 1.57079translation='0 2 -1'>
<Shape>
<Appearance>
<Material DEF='ReddiffuseColor='1 0 0'/>
</Appearance>
<Cylinder height='6radius='.04'/>
</Shape>
</Transform>
<Transform rotation='1 0 0 .6scale='1 1 .01translation='0 1.352 1.0825'>
<Shape>
<Appearance>
<Material USE=' Red'/>
</Appearance>
<Cone bottomRadius='3height='1.48'/>
</Shape>
</Transform>
<Transform translation='0 0 -4.5'>
<Shape>
<Appearance>
<Material DEF='GreendiffuseColor='.2 1 0'/>
</Appearance>
<Box size='10 5 .2'/>
</Shape>
</Transform>
<Transform rotation='0 1 0 1.57079translation='-4.9 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='0.5 1 0'/>
</Appearance>
<Box size='9 5 .2'/>
</Shape>
</Transform>
<Transform rotation='0 1 0 1.57079translation='-4.7 0 0'>
<Shape>
<Appearance>
<Material DEF='DarkGreendiffuseColor='0 .5 0'/>
<ImageTexture
  url=' "chipset.jpg " "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/chipset.jpg " ' />
</Appearance>
<Box size='7 3 .2'/>
</Shape>
</Transform>
<Group>
<!-- ROUTE information for PrinterDrumTimer node:  [from fraction_changed to PrinterDrumOr.set_fraction ] -->
<TimeSensor DEF='PrinterDrumTimercycleInterval='10loop='true'/>

<!-- ROUTE information for PrinterDrumOr node:  [from PrinterDrumTimer.fraction_changed to set_fraction ] [from value_changed to PrinterDrum.rotation ] -->
<OrientationInterpolator DEF='PrinterDrumOrkey='0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1keyValue='1 0 0 6.283185307 1 0 0 5.497787144 1 0 0 4.71238898 1 0 0 3.926990817 1 0 0 3.141592654 1 0 0 2.35619449 1 0 0 1.570796327 1 0 0 0.7854163 1 0 0 0'/>
</Group>
<!-- ROUTE information for PrinterDrum node:  [from PrinterDrumOr.value_changed to rotation ] -->
<Transform DEF='PrinterDrumtranslation='0 0.05 0'>
<Transform rotation='0 0 1 1.57079'>
<Shape>
<Appearance>
<Material DEF='DrumColordiffuseColor='1 1 1shininess='0.6specularColor='1 1 1'/>
<ImageTexture
  url=' "ReverseText.jpg " "https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/ReverseText.jpg " ' />
</Appearance>
<Cylinder height='6'/>
</Shape>
</Transform>
</Transform>
</Group>
< ROUTE  fromNode=' PrinterDrumTimer' fromField='fraction_changed' toNode=' PrinterDrumOr' toField='set_fraction'/>
< ROUTE  fromNode=' PrinterDrumOr' fromField='value_changed' toNode=' PrinterDrum' toField='rotation'/>
< ROUTE  fromNode=' MirrorTimer' fromField='fraction_changed' toNode=' MirrorOr' toField='set_fraction'/>
< ROUTE  fromNode=' MirrorOr' fromField='value_changed' toNode=' Mirror' toField='rotation'/>
< ROUTE  fromNode=' ChargeRollerTimer' fromField='fraction_changed' toNode=' ChargeRollerOr' toField='set_fraction'/>
< ROUTE  fromNode=' ChargeRollerOr' fromField='value_changed' toNode=' ChargeRoller' toField='rotation'/>
< ROUTE  fromNode=' TopFuserTimer' fromField='fraction_changed' toNode=' TopFuserOr' toField='set_fraction'/>
< ROUTE  fromNode=' TopFuserOr' fromField='value_changed' toNode=' TopFuser' toField='rotation'/>
< ROUTE  fromNode=' BottomFuserTimer' fromField='fraction_changed' toNode=' BottomFuserOr' toField='set_fraction'/>
< ROUTE  fromNode=' BottomFuserOr' fromField='value_changed' toNode=' BottomFuser' toField='rotation'/>
< ROUTE  fromNode=' TopPaperTimer' fromField='fraction_changed' toNode=' TopPaperOr' toField='set_fraction'/>
< ROUTE  fromNode=' TopPaperOr' fromField='value_changed' toNode=' TopPaper' toField='rotation'/>
< ROUTE  fromNode=' BottomPaperTimer' fromField='fraction_changed' toNode=' BottomPaperOr' toField='set_fraction'/>
< ROUTE  fromNode=' BottomPaperOr' fromField='value_changed' toNode=' BottomPaper' toField='rotation'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: BottomFuser, BottomFuserOr, BottomFuserTimer, BottomPaper, BottomPaperOr, BottomPaperTimer, ChargeRoller, ChargeRollerOr, ChargeRollerTimer, DarkGreen, DrumColor, Green, Mirror, MirrorOr, MirrorTimer, paperroller, PrinterDrum, PrinterDrumOr, PrinterDrumTimer, Red, TopFuser, TopFuserOr, TopFuserTimer, TopPaper, TopPaperOr, TopPaperTimer

Index for Viewpoint node: Viewpoint_1
-->

Event Graph ROUTE Table entries with 14 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.

BottomFuserTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
BottomFuserOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
BottomFuserOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
BottomFuser
Transform
rotation
SFRotation


BottomPaperTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
BottomPaperOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
BottomPaperOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
BottomPaper
Transform
rotation
SFRotation


ChargeRollerTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
ChargeRollerOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
ChargeRollerOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
ChargeRoller
Transform
rotation
SFRotation


MirrorTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
MirrorOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
MirrorOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
Mirror
Transform
rotation
SFRotation


PrinterDrumTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
PrinterDrumOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
PrinterDrumOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
PrinterDrum
Transform
rotation
SFRotation


TopFuserTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
TopFuserOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
TopFuserOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
TopFuser
Transform
rotation
SFRotation


TopPaperTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
TopPaperOr
OrientationInterpolator
set_fraction
SFFloat

 
 
then
TopPaperOr
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
TopPaper
Transform
rotation
SFRotation


-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/LaserPrinterIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/StudentProjects/LaserPrinter.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)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->