Blitz3D+ Command Reference

PhysicsBodyAngularVelocityZ# ( body )

Parameters

body - physics-body handle returned by CreatePhysicsBody

Description

Returns the Z component of a body's angular velocity.

The value is in radians per second about the world Z axis (2*Pi is one full turn per second). A positive value is spin in the direction of increasing roll, following the rotation senses described under PhysicsBodyAngularVelocity. Together with PhysicsBodyAngularVelocityX and PhysicsBodyAngularVelocityY it gives the full spin vector.

Requires Extended mode.

See also: PhysicsBodyAngularVelocity, PhysicsBodyAngularVelocityX, PhysicsBodyAngularVelocityY, PhysicsBodyVelocityZ.

Example

; PhysicsBodyAngularVelocityZ Example
; -----------------------------------
; Requires Extended mode.

Graphics3D 640,480,0,2
SetBuffer BackBuffer()

Const PHYSICS_DYNAMIC=2

camera=CreateCamera()
PositionEntity camera,0,2,-7

light=CreateLight()
RotateEntity light,45,-30,0
AmbientLight 50,50,50

; Zero gravity keeps the tumbling capsule floating in place
world=CreatePhysicsWorld()
PhysicsGravity world,0,0,0

; Blue capsule whose spin you control
pill=CreateCylinder(16,True)
ScaleEntity pill,0.5,1.25,0.5
PositionEntity pill,0,1.5,0,True
EntityColor pill,80,180,255
pill_body=CreatePhysicsBody(world,pill,PHYSICS_DYNAMIC)
pill_shape=PhysicsBodyCapsule(pill_body,1,2.5,1)

; Start with a gentle spin about the Y axis
PhysicsBodyAngularVelocity pill_body,0,2,0

While Not KeyDown(1)

    ; Keys 1/2/3 set the spin about the X, Y or Z axis; Space stops it
    If KeyHit(2) Then PhysicsBodyAngularVelocity pill_body,3,0,0
    If KeyHit(3) Then PhysicsBodyAngularVelocity pill_body,0,3,0
    If KeyHit(4) Then PhysicsBodyAngularVelocity pill_body,0,0,3
    If KeyHit(57) Then PhysicsBodyAngularVelocity pill_body,0,0,0

    ; Advance the Box3D simulation by one 60 Hz step
    StepPhysics world,1.0/60.0,4

    ; Read back the live spin components in radians per second
    spin_x#=PhysicsBodyAngularVelocityX(pill_body)
    spin_y#=PhysicsBodyAngularVelocityY(pill_body)
    spin_z#=PhysicsBodyAngularVelocityZ(pill_body)

    ; Arrow keys move the camera
    If KeyDown(200) Then MoveEntity camera,0,0,0.1
    If KeyDown(208) Then MoveEntity camera,0,0,-0.1
    If KeyDown(203) Then TurnEntity camera,0,1,0
    If KeyDown(205) Then TurnEntity camera,0,-1,0

    RenderWorld

    Text 0,0,"1/2/3: spin axis   Space: stop   Arrow keys: camera   Esc: exit"
    Text 0,20,"Angular velocity X: "+spin_x+" rad/s"
    Text 0,40,"Angular velocity Y: "+spin_y+" rad/s"
    Text 0,60,"Angular velocity Z: "+spin_z+" rad/s"

    Flip

Wend

FreePhysicsWorld world
FreeEntity pill
End

Index