Ejemplo n.º 1
0
 def display (self):
     self.camera (
         position = sp.tEva ((sp.world.rocket.positionX + 4, sp.world.rocket.positionY, sp.world.rocket.positionZ)),
         focus = sp.tEva ((sp.world.rocket.positionX, sp.world.rocket.positionY, sp.world.rocket.positionZ + 1.5))
     )
 
     self.earth ()
     self.moon ()
 
     self.body (
         position = sp.tEva ((sp.world.rocket.positionX, sp.world.rocket.positionY, sp.world.rocket.positionZ)),
         attitude = sp.world.rocket._shipRotMat,
         parts = lambda:
             self.nose () +
             self.bracket (
                 parts = lambda:
                     self.tankGreen () +
                     self.tankRed () +
                     self.tankBlue () +            
                     self.tankYellow () +
                     self.gimbal (
                         rotation = sp.world.rocket.blueYellowAngle,
                         parts = lambda:
                             self.thruster (
                                 rotation = sp.world.rocket.greenRedAngle,
                                 parts = lambda:
                                     self.flame (
                                         scale = sp.tsMul ((1, 1, 1),
                                         sp.world.rocket.thrust / sp.world.rocket.thrusterMaxForce * (0.9 + 0.1 * rd.random ())),
                                         color = (1, 0.3 + 0.7 * rd.random (), 0))
     )       )       )       )
Ejemplo n.º 2
0
 def getPlateColor(temperature):
     return sp.tsMul((1, 0.7, 0), (1 + temperature) / 10.)
Ejemplo n.º 3
0
 def __call__ (self, brightness):
     self.color = sp.tsMul (self.originalColor, 0.2 + 0.8 * brightness)
     return sp.Cylinder.__call__ (self)
Ejemplo n.º 4
0
 def __call__ (self, on):
     self.color = self.originalColor if on else sp.tsMul (self.originalColor, 0.2)
     return sp.Cylinder.__call__ (self)
Ejemplo n.º 5
0
def getGravVec(mass0, mass1, diam, relPos):
    relPos = sp.tEva(relPos)
    dist = sp.tNor(relPos)
    factor = -1 if dist > diam / 2 else 0.1
    return sp.tsMul(sp.tUni(relPos),
                    factor * gamma * mass0 * mass1 / (dist * dist))