Difference between revisions of "love.graphics.shear"

(Shearing bug note)
(Note about persistence.)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{newin|[[0.8.0]]|080|type=function}}
 
{{newin|[[0.8.0]]|080|type=function}}
 +
Shears the coordinate system.
  
{{notice|Bug: Shearing resets transformations in [[0.9.2]]. A workaround is using a combination of rotating and scaling to imitate shearing.}}
+
This change lasts until the next [[love.draw]] call, or a [[love.graphics.pop]] reverts to a previous [[love.graphics.push]], or [[love.graphics.origin]] is called - whichever comes first.
 +
 
 +
{{notice|In version 0.9.2, a bug caused this function to reset all transformations. It was fixed in [[0.10.0]]. A workaround for 0.9.2 would be to use a combination of rotating and scaling to imitate shearing.}}
  
Shears the coordinate system.
 
 
== Function ==
 
== Function ==
 
=== Synopsis ===
 
=== Synopsis ===
Line 17: Line 19:
 
=== Squish a rectangle ===
 
=== Squish a rectangle ===
 
<source lang="lua">
 
<source lang="lua">
x = 100
 
y = 100
 
width = 100
 
height = 50
 
 
 
function love.draw()
 
function love.draw()
love.graphics.translate(x, y)
+
love.graphics.translate(100, 100)
 
local t = love.timer.getTime()
 
local t = love.timer.getTime()
 
love.graphics.shear(math.cos(t), math.cos(t * 1.3))
 
love.graphics.shear(math.cos(t), math.cos(t * 1.3))
love.graphics.rectangle('fill', 0, 0, width, height)
+
love.graphics.rectangle('fill', 0, 0, 100, 50)
 
end
 
end
 
</source>
 
</source>
 +
 
== See Also ==
 
== See Also ==
 
* [[parent::love.graphics]]
 
* [[parent::love.graphics]]
 +
* [[love.graphics.pop]]
 +
* [[love.graphics.push]]
 +
* [[love.graphics.rotate]]
 +
* [[love.graphics.scale]]
 +
* [[love.graphics.translate]]
 +
* [[love.graphics.origin]]
 
[[Category:Functions]]
 
[[Category:Functions]]
 
{{#set:Description=Shears the coordinate system.}}
 
{{#set:Description=Shears the coordinate system.}}

Latest revision as of 18:22, 3 June 2022

Available since LÖVE 0.8.0
This function is not supported in earlier versions.

Shears the coordinate system.

This change lasts until the next love.draw call, or a love.graphics.pop reverts to a previous love.graphics.push, or love.graphics.origin is called - whichever comes first.

O.png In version 0.9.2, a bug caused this function to reset all transformations. It was fixed in 0.10.0. A workaround for 0.9.2 would be to use a combination of rotating and scaling to imitate shearing.  


Function

Synopsis

love.graphics.shear( kx, ky )

Arguments

number kx
The shear factor on the x-axis.
number ky
The shear factor on the y-axis.

Returns

Nothing.

Examples

Squish a rectangle

function love.draw()
	love.graphics.translate(100, 100)
	local t = love.timer.getTime()
	love.graphics.shear(math.cos(t), math.cos(t * 1.3))
	love.graphics.rectangle('fill', 0, 0, 100, 50)
end

See Also


Other Languages