Matemática e Computação
 

Não abandones o velho amigo, porque o novo não será como ele. (Bíblia)
Não se compra a amizade de um companheiro a quem as privações vividas em comum nos ligaram para sempre. (Saint-Exupéry)

 

 

6.6 - Rotas

Rotas são usadas para definir caminhos de saída de um evento para entrada em outro.

............DEF Clock TimeSensor {
......
............cycleInterval 4.0
......
............loop TRUE
......
......},

............DEF CubePath PositionInterpolator {
......
............key [
......
..................0.00, 0.11, 0.17, 0.22,
......
..................0.33, 0.44, 0.50, 0.55,
......
..................0.66, 0.77, 0.83, 0.88,
......
..................0.99
......
............]
......
............keyValue [
......
..................0.0 0.0 0.0, 1.0 1.96 1.0,
......
..................1.5 2.21 1.5, 2.0 1.96 2.0,
......
..................3.0 0.0 3.0, 2.0 1.96 3.0,
......
..................1.5 2.21 3.0, 1.0 1.96 3.0,
......
..................0.0 0.0 3.0, 0.0 1.96 2.0,
......
..................0.0 2.21 1.5, 0.0 1.96 1.0,
......
..................0.0 0.0 0.0
......
............]
......
......}

ROUTE Clock.fraction_changed TO CubePath.set_fraction
ROUTE CubePath.value_changed TO Cube.set_translation

Foram defindos dois objetos: Clock e CubePath a partir dos nós TimeSensor e PositionInterpolator. Depois foi criada uma rota entre os dois campos do sensor. Os valores de frações de tempo produzidos pelo nó Clock são enviados como entrada para o nó CubePath. Com a combinação de tais frações com os valores de tempo descritos no campo key do nó CubePath são associados com posições declaradas no keyValue, que devem ser enviadas para o nó de controle das transformações geométricas, animando dessa forma o cubo.

Exemplo 52: - Animação 5

#VRML V2.0 utf8

DEF ES Transform {
     translation -4 0 0
     children Shape {
          appearance Appearance {
               material Material{
                    diffuseColor 0 0 1
               }
          }
          geometry Box {
               size 1 1 1
          }
     }
}
DEF PI PositionInterpolator {
     key [0   0.25   0.5   0.75   1]
     keyValue [-4 0 0,   0 0 0,   4 0 0,   0 0 0,   -4 0 0]
}
DEF OI OrientationInterpolator {
     key [0   0.25   0.50   0.75   1]
     keyValue [0 0 1 0,   0 0 1 -3.14,   0 0 1 -6.28,   0 0 1 -3.14,   0 0 1 0]
}
DEF TS TimeSensor {
     # loop TRUE
     cycleInterval 5
}
DEF Touch TouchSensor {}
ROUTE Touch.touchTime TO TS.startTime
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO ES.translation
ROUTE TS.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO ES.rotation

 

Exemplo 53: - Animação 6

DEF ES Transform {
     translation -4 0 0
     children Shape {
          appearance Appearance {
               material Material{
                    diffuseColor 0 0 1
               }
          }
          geometry Box {
               size 1 1 1
          }
     }
}
DEF PI PositionInterpolator {
     key [0    0.25    0.5    0.75    1]
     keyValue [ -4 0 0,    0 0 0,    4 0 0,    0 0 0,    -4 0 0]
}
DEF OI OrientationInterpolator {
     key [0    0.25    0.50    0.75    1]
     keyValue [ 0 0 1 0,    0 0 1 -3.14,    0 0 1 -6.28,    0 0 1 -3.14,    0 0 1 0]
}
DEF SI PositionInterpolator{
     key [ 0    0.25    0.5    0.75    1 ]
     keyValue [ 1 1 1    3 3 3    5 5 5    3 3 3    1 1 1 ]
}

DEF TS TimeSensor {
# loop TRUE
cycleInterval 5
}
DEF Touch TouchSensor {}
ROUTE Touch.touchTime TO TS.startTime
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE PI.value_changed TO ES.translation
ROUTE TS.fraction_changed TO OI.set_fraction
ROUTE OI.value_changed TO ES.rotation
ROUTE TS.fraction_changed TO SI.set_fraction
ROUTE SI.value_changed TO ES.scale