another simple maths question

Blitz3D Forums/Blitz3D Programming/another simple maths question

Personally I use a pivot to deal with forces I find it much easier to move things around etc.

EG:
Graphics3D 640,480

PlayerPhysicsPivot = CreatePivot()
Player = CreateCube()

Middle = CreatePivot()


Camera = CreateCamera()

PositionEntity camera,0,50,0
PointEntity camera,middle

; amount of force to apply to entity
Force# = 0.2

Repeat


	If KeyDown(200) Then TranslateEntity PlayerPhysicsPivot,0,0,Force#
	If KeyDown(208) Then TranslateEntity PlayerPhysicsPivot,0,0,-Force#
	If KeyDown(203) Then TranslateEntity PlayerPhysicsPivot,-Force#,0,0
	If KeyDown(205) Then TranslateEntity PlayerPhysicsPivot,Force#,0,0
	
	; Drag, the 0.1 is how much drag, the higher the figure the more drag (from 0 to 1)
	PointEntity PlayerPhysicsPivot,Middle
	MoveEntity PlayerPhysicsPivot,0,0,EntityDistance(PlayerPhysicsPivot,Middle)*0.1
	
	TranslateEntity Player,EntityX(PlayerPhysicsPivot),EntityY(PlayerPhysicsPivot),EntityZ(PlayerPhysicsPivot)
		
	RenderWorld
	Flip
	
Until KeyHit(1)


This has the added bonus that if you want to apply wind for example you just move all the physics pivots in the wind direction.

Same Example with a wind pivot:
Graphics3D 640,480

PlayerPhysicsPivot = CreatePivot()
Player = CreateCube()

Middle = CreatePivot()


Camera = CreateCamera()

; Add a wind pivot
Wind = CreatePivot()
TurnEntity Wind,0,Rand(359),0
MoveEntity Wind,0,0,Rnd(0,.1)

PositionEntity camera,0,50,0
PointEntity camera,middle

; amount of force to apply to entity
Force# = 0.2

Repeat


	If KeyDown(200) Then TranslateEntity PlayerPhysicsPivot,0,0,Force#
	If KeyDown(208) Then TranslateEntity PlayerPhysicsPivot,0,0,-Force#
	If KeyDown(203) Then TranslateEntity PlayerPhysicsPivot,-Force#,0,0
	If KeyDown(205) Then TranslateEntity PlayerPhysicsPivot,Force#,0,0
	
	; Add wind force
	TranslateEntity PlayerPhysicsPivot,EntityX(wind),EntityY(wind),EntityZ(wind)
	
	; Drag, the 0.1 is how much drag, the higher the figure the more drag (from 0 to 1)
	PointEntity PlayerPhysicsPivot,Middle
	MoveEntity PlayerPhysicsPivot,0,0,EntityDistance(PlayerPhysicsPivot,Middle)*0.1
	
	TranslateEntity Player,EntityX(PlayerPhysicsPivot),EntityY(PlayerPhysicsPivot),EntityZ(PlayerPhysicsPivot)
		
	RenderWorld
	Flip
	
Until KeyHit(1)