GetElementMatrix: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
Line 3: Line 3:
This function gets an element's transform matrix. This contains 16 float values that multiplied to a point will give you the point transformed. It is most useful for matrix calculations such as calculating offsets. For further information, please refer to a tutorial of matrices in computer graphics programming.
This function gets an element's transform matrix. This contains 16 float values that multiplied to a point will give you the point transformed. It is most useful for matrix calculations such as calculating offsets. For further information, please refer to a tutorial of matrices in computer graphics programming.


Note that the matrix returned by this function is [http://bugs.mtasa.com/view.php?id=6984 not setup correctly for some calculations.]
==Syntax==
==Syntax==
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">

Revision as of 23:29, 4 April 2012

This function gets an element's transform matrix. This contains 16 float values that multiplied to a point will give you the point transformed. It is most useful for matrix calculations such as calculating offsets. For further information, please refer to a tutorial of matrices in computer graphics programming.

Note that the matrix returned by this function is not setup correctly for some calculations.

Syntax

table getElementMatrix ( element theElement )       

Required Arguments

  • theElement: The element which you wish to retrieve the matrix for

Returns

Returns a multi-dimensional array containing a 4x4 matrix.

Example

This example creates a utility function that gets the position that is in front of a specified player. Note that it assumes you have the Lua Matrix library installed.

function getPositionInFrontOfElement(element)
	--Get the position 5 units in front
	local transformed = matrix{0,5,0} * matrix(getElementMatrix(element))
	--Get our offset components
	local offX,offY,offZ = transformed[1][1],transformed[2][1],transformed[3][1]
	--Return the transformed point
	return offX, offY, offZ
end

This example is exactly the same as above, but without using the Lua Matrix library.

function getPositionInFrontOfElement(element)
	-- Get the matrix
	local matrix = getElementMatrix ( element )
	-- Get the transformation of a point 5 units in front of the element
	local offX = 0 * matrix[1][1] + 5 * matrix[2][1] + 0 * matrix[3][1] + 1 * matrix[4][1]
	local offY = 0 * matrix[1][2] + 5 * matrix[2][2] + 0 * matrix[3][2] + 1 * matrix[4][2]
	local offZ = 0 * matrix[1][3] + 5 * matrix[2][3] + 0 * matrix[3][3] + 1 * matrix[4][3]
	--Return the transformed point
	return offX, offY, offZ
end

See Also