mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
Merge pull request #2330 from erinmaus/inverse-of
Add 'inverseOf' to love.Transform
This commit is contained in:
@@ -141,6 +141,15 @@ int w_Transform_inverse(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int w_Transform_inverseOf(lua_State *L)
|
||||||
|
{
|
||||||
|
Transform *destination = luax_checktransform(L, 1);
|
||||||
|
Transform *source = luax_checktransform(L, 2);
|
||||||
|
destination->setMatrix(source->getMatrix().inverse());
|
||||||
|
lua_pushvalue(L, 1);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int w_Transform_apply(lua_State *L)
|
int w_Transform_apply(lua_State *L)
|
||||||
{
|
{
|
||||||
Transform *t = luax_checktransform(L, 1);
|
Transform *t = luax_checktransform(L, 1);
|
||||||
@@ -298,6 +307,7 @@ static const luaL_Reg functions[] =
|
|||||||
{
|
{
|
||||||
{ "clone", w_Transform_clone },
|
{ "clone", w_Transform_clone },
|
||||||
{ "inverse", w_Transform_inverse },
|
{ "inverse", w_Transform_inverse },
|
||||||
|
{ "inverseOf", w_Transform_inverseOf },
|
||||||
{ "apply", w_Transform_apply },
|
{ "apply", w_Transform_apply },
|
||||||
{ "isAffine2DTransform", w_Transform_isAffine2DTransform },
|
{ "isAffine2DTransform", w_Transform_isAffine2DTransform },
|
||||||
{ "translate", w_Transform_translate },
|
{ "translate", w_Transform_translate },
|
||||||
|
|||||||
@@ -145,6 +145,16 @@ love.test.math.Transform = function(test)
|
|||||||
px, py = transform:transformPoint(0, 0)
|
px, py = transform:transformPoint(0, 0)
|
||||||
test:assertCoords({-px, -py}, {ipx, ipy}, 'check inverse points transform')
|
test:assertCoords({-px, -py}, {ipx, ipy}, 'check inverse points transform')
|
||||||
|
|
||||||
|
-- check inverse and inverseOf produce same values
|
||||||
|
transform:reset()
|
||||||
|
transform:setTransformation(4, 4, math.pi / 2, 2, 2)
|
||||||
|
local inverseClone = transform:inverse()
|
||||||
|
local inverseDestinationTransform = love.math.newTransform()
|
||||||
|
inverseDestinationTransform:inverseOf(transform)
|
||||||
|
local opx1, opy1 = inverseClone:transformPoint(0, 0)
|
||||||
|
local opx2, opy2 = inverseDestinationTransform:transformPoint(0, 0)
|
||||||
|
test:assertCoords({opx1, opy1}, {opx2, opy2}, 'check inverse and inverseOf produce same values')
|
||||||
|
|
||||||
-- check matrix manipulation
|
-- check matrix manipulation
|
||||||
transform:setTransformation(0, 0, 0, 1, 1, 0, 0, 0, 0)
|
transform:setTransformation(0, 0, 0, 1, 1, 0, 0, 0, 0)
|
||||||
transform:translate(4, 4)
|
transform:translate(4, 4)
|
||||||
|
|||||||
Reference in New Issue
Block a user