GetElementMatrix: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 19: Line 19:
function getPositionInFrontOfElement(element)
function getPositionInFrontOfElement(element)
--Get the position 5 units in front
--Get the position 5 units in front
local transformed = matrix{0,5,0} * matrix(getElementMatrix(element)}
local transformed = matrix{0,5,0} * matrix(getElementMatrix(element))
--Get our offset components
--Get our offset components
local offX,offY,offZ = transformed[1][1],transformed[2][1],transformed[3][1]
local offX,offY,offZ = transformed[1][1],transformed[2][1],transformed[3][1]

Revision as of 01:10, 5 June 2009

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.

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] + matrix[4][1]
	local offY = 0 * matrix[1][2] + 5 * matrix[2][2] + 0 * matrix[3][2] + matrix[4][2]
	local offZ = 0 * matrix[1][3] + 5 * matrix[2][3] + 0 * matrix[3][3] + matrix[4][3]
	--Return the transformed point
	return offX, offY, offZ
end

See Also