Here are a few extra Vector3 commands. Enjoy!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Vector3 Extras //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Subtract( ResultVec, SubtractVec )
SetVector3( ResultVec , GetVector3X(ResultVec)-GetVector3X(SubtractVec) , GetVector3Y(ResultVec)-GetVector3Y(SubtractVec) , GetVector3Z(ResultVec)-GetVector3Z(SubtractVec) )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Normalize( ResultVec )
VecLength AS FLOAT : VecLength = GetVector3Length(ResultVec)
SetVector3( ResultVec , GetVector3X(ResultVec)/VecLength , GetVector3Y(ResultVec)/VecLength , GetVector3Z(ResultVec)/VecLength )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Reflect( ResultVec , ReflectNorm )
ResultTemp AS INTEGER : ResultTemp = CreateVector3( GetVector3X(ReflectNorm) , GetVector3Y(ReflectNorm) , GetVector3Z(ReflectNorm) )
// Reflect
GetVector3Multiply(ResultTemp, GetVector3Dot(ResultVec,ReflectNorm) )
GetVector3Multiply(ResultTemp,-2.0)
GetVector3Add(ResultTemp,ResultVec)
// Update ResultVec
SetVector3( ResultVec , GetVector3X(ResultTemp) , GetVector3Y(ResultTemp) , GetVector3Z(ResultTemp) )
DeleteVector3(ResultTemp)
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Copy( DestVec , SourceVec )
SetVector3( DestVec , GetVector3X(SourceVec) , GetVector3Y(SourceVec) , GetVector3Z(SourceVec) )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Length( ResultVec , Length AS FLOAT )
VecScale AS FLOAT : VecScale = GetVector3Length(ResultVec) / Length
SetVector3( ResultVec , GetVector3X(ResultVec)/VecScale , GetVector3Y(ResultVec)/VecScale , GetVector3Z(ResultVec)/VecScale )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3FromPitchYaw(ResultVec,Pitch AS FLOAT,Yaw AS FLOAT)
xzLen AS FLOAT : xzLen = cos(Pitch)
VecX AS FLOAT : VecX = xzLen * sin(-Yaw)
VecY AS FLOAT : VecY = sin(Pitch)
VecZ AS FLOAT : VecZ = -xzLen * cos( Yaw)
SetVector3( resultVec, VecX,VecY,VecZ)
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3X( resultVec , valueX AS FLOAT)
SetVector3( resultVec, valueX,GetVector3Y( resultVec ),GetVector3Z( resultVec ) )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Y( resultVec , valueY AS FLOAT)
SetVector3( resultVec, GetVector3X( resultVec ),valueY,GetVector3Z( resultVec ) )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Z( resultVec , valueZ AS FLOAT)
SetVector3( resultVec, GetVector3X( resultVec ),GetVector3Y( resultVec ),valueZ )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// These should be "SetVec..."
FUNCTION SetVector3Add( resultVec, addVec )
GetVector3Add( resultVec, addVec )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Multiply( resultVec, multiplier AS FLOAT )
GetVector3Multiply( resultVec, multiplier )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
FUNCTION SetVector3Cross( resultVec, vectorU, vectorV )
GetVector3Cross( resultVec, vectorU, vectorV )
ENDFUNCTION
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
REMSTART
//---------------------------------------------------------------------------------------
CreateVector3
integer CreateVector3( x, y, z )
integer CreateVector3()
DeleteVector3
DeleteVector3( vectorID )
//---------------------------------------------------------------------------------------
GetVector3Distance
"Returns the distance between the 2 vectors."
float GetVector3Distance( vectorU, vectorV )
GetVector3Dot
"Returns the dot product of 2 vectors."
float GetVector3Dot( vectorU, vectorV )
GetVector3Length
float GetVector3Length( vectorID )
GetVector3X
float GetVector3X( vectorID )
GetVector3Y
float GetVector3Y( vectorID )
GetVector3Z
float GetVector3Z( vectorID )
//---------------------------------------------------------------------------------------
SetVector3
SetVector3( vectorID, x, y, z )
GetVector3Add
"Returns the Vector ID which is the sum of 2 vectors passed in."
GetVector3Add( resultVec, addVec )
resultVec - ID of the vector to add and hold results.
addVec - ID of vector to add.
GetVector3Multiply
GetVector3Multiply( resultVec, multiplier )
resultVec - ID of the vector to multiply.
multiplier - float value to multiply by.
GetVector3Cross
"Fills the result vector with the cross product of 2 vectors passed in."
GetVector3Cross( resultVec, vectorU, vectorV )
REMEND
To go along with:
https://www.appgamekit.com/documentation/Reference/Maths.htm