Convert pitch/yaw/roll to Vector

Blitz3D Forums/Blitz3D Programming/Convert pitch/yaw/roll to Vector

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Hi

Test that function:

Function PitchYawToVector(pitch#,yaw#,dest.Vector)

	dest\x = Cos(pitch) * Sin(yaw)
	dest\y = Sin(pitch)
	dest\z = Cos(pitch) * Cos(yaw)
	NormalizarVector(dest)
	
End Function


with this



Type Vector
	Field x#, y#, z#
End Type

v.Vector = New vector

Graphics3D 800,600,0,2

SetBuffer = BackBuffer()

cam   = CreateCamera()
PositionEntity cam,0,0,-5
light = CreateLight()
cube1 = CreateCube()
ScaleEntity cube1,.1,.1,1
EntityColor cube1,255,0,0

Cube1Pitch# = 0
Cube1Yaw# = 0

Repeat

	If KeyDown(200) Then Cube1Pitch = Cube1Pitch + 1
	If KeyDown(208) Then Cube1Pitch = Cube1Pitch - 1

	If KeyDown(203) Then Cube1Yaw = Cube1Yaw + 1
	If KeyDown(205) Then Cube1Yaw = Cube1Yaw - 1

	RotateEntity cube1, Cube1Pitch, Cube1Yaw, 0, True
	
	PitchYawToVector(Cube1Pitch, Cube1Yaw, v)

	RenderWorld

	Text 10,10,Cube1Pitch
	Text 10,30,Cube1Yaw
	
	Text 100,10,v\x
	Text 100,30,v\y
	Text 100,50,v\z
	Text 100,70,Magnitud(v)
	
	TFormVector 0,0,1, Cube1, 0
	
	Text 200,10,TFormedX()
	Text 200,30,TFormedY()
	Text 200,50,TFormedZ()
	v\x = TFormedX()
	v\y = TFormedY()
	v\z = TFormedZ()
	Text 200,70,Magnitud(v)
	Flip

Until KeyHit(1)
End





Function PitchYawToVector(pitch#,yaw#,dest.Vector)

	dest\x = Cos(pitch) * Sin(yaw)
	dest\y = Sin(pitch)
	dest\z = Cos(pitch) * Cos(yaw)
	NormalizarVector(dest)
	
End Function


Function CuadradoVector#(v.Vector)
	Return v\X*v\X + v\y*v\y + v\Z*v\Z
End Function

Function Magnitud#(V.Vector)
	Return Float(Sqr(CuadradoVector(V)))
End Function

Function NormalizarVector(v.Vector)	; v = v(normalizado)
	Local Temp#
	Local mag#
	mag = Magnitud(v)
	If mag>0 Then
		Temp# = Float(1/mag)
		v\X = v\X * Temp
		v\y = v\y * Temp
		v\Z = v\Z * Temp
	Else
		v\x = 0
		v\y = 0
		v\z = 0
	End If
End Function


hope that is what you need

(btw nice gui!, thank's)

Edit:
there are a sign error in x and y, please modify the function to:

Function PitchYawToVector(pitch#,yaw#,dest.Vector)
	dest\x = -Cos(pitch) * Sin(yaw)
	dest\y = -Sin(pitch)
	dest\z = Cos(pitch) * Cos(yaw)
	NormalizarVector(dest)
End Function




Juan