Difference between revisions of "love.graphics.polygon (Français)"
(→Deux façons de tracer le même triangle) |
(→Tracer un boid tourné (triangle dirigé)) |
||
Line 74: | Line 74: | ||
[[File:boid.png|upright=0.5|thumb|right|top|Triangle tracé en utilisant love.graphics.polygon]] | [[File:boid.png|upright=0.5|thumb|right|top|Triangle tracé en utilisant love.graphics.polygon]] | ||
<source lang="lua"> | <source lang="lua"> | ||
− | function drawBoid (mode, x, y, longueur, largeur , angle) -- position, longueur, largeur et angle | + | function drawBoid (mode, x, y, longueur, largeur, angle) -- position, longueur, largeur et angle |
love.graphics.push() | love.graphics.push() | ||
love.graphics.translate(x, y) | love.graphics.translate(x, y) |
Latest revision as of 22:21, 5 January 2023
Disponible depuis LÖVE 0.4.0 |
Ce-tte function n'est pas supporté-e par des versions plus anciennes. |
Trace un polygone.
En fonction de l'argument de mode, cette fonction accepte différents arguments numériques ou une table simple d'arguments numériques. Dans tous les cas, les arguments sont interprétés comme alternants les coordonnées x et y des sommets du polygone.
Lorsqu'utilisé en mode fill (remplissage), le polygone doit être convexe et simple ou des erreurs de rendus pourraient apparaître. Les fonctions love.math.triangulate et love.math.isConvex peuvent être utilisées avec 0.9.0+. |
Fonction
Synopsis
love.graphics.polygon( mode, ... )
Arguments
DrawMode (Français) mode
- La façon dont le polygone doit être tracé.
number (Français) ...
- Les sommets du polygone.
Retourne
Rien.
Fonction
Synopsis
love.graphics.polygon( mode, vertices )
Arguments
DrawMode (Français) mode
- La façon dont le polygone doit être tracé.
table (Français) vertices
- Les sommets du polygone sous forme de table.
Retourne
Rien.
Exemples
Deux façons de tracer le même triangle
Cet exemple montre comment passer les coordonnées explicitement et comment les passer par un table en argument.
-- Passe directement les coordonnées
love.graphics.polygon('fill', 100, 100, 200, 100, 150, 200)
-- Définit une table avec les coordonnées
-- Cette table pourrait également être construite incrémentalement
local vecteurs = {100, 100, 200, 100, 150, 200}
-- Passe la table à la fonction comme second argument
love.graphics.polygon('fill', vecteurs)
Tracer un polygone concave
local vecteurs = {100,100, 200,100, 200,200, 300,200, 300,300, 100,300} -- forme concave en L.
local triangles = love.math.triangulate(vecteurs)
for i, triangle in ipairs(triangles) do
love.graphics.polygon("fill", triangle)
end
Tracer un rectangle avec rotation
Voici une méthode pour tracer un rectangle avec rotation rectangle.
function drawRotatedRectangle(mode, x, y, largeur, hauteur, angle)
local cosa, sina = math.cos(angle), math.sin(angle)
local dx1, dy1 = hauteur*cosa, hauteur*sina
local dx2, dy2 = -hauteur*sina, hauteur*cosa
local px1, py1 = x, y
local px2, py2 = x+dx1, y+dy1
local px3, py3 = x+dx1+dx2, y+dy1+dy2
local px4, py4 = x+dx2, y+dy2
love.graphics.polygon(mode, px1,py1, px2,py2, px3,py3, px4,py4)
end
Tracer un boid tourné (triangle dirigé)
function drawBoid (mode, x, y, longueur, largeur, angle) -- position, longueur, largeur et angle
love.graphics.push()
love.graphics.translate(x, y)
love.graphics.rotate( angle )
love.graphics.polygon(mode, -longueur/2, -largeur /2, -longueur/2, largeur /2, longueur/2, 0)
love.graphics.pop()
end
x, y, angle = 200, 100, math.pi/4
drawBoid ("fill", x, y, 20, 10 , angle)
Hexadécagone Pixel-perfect
Pour un meilleur résultat, il peut être utilisé avec le style de ligne "rough" (brut) et le filtre de canvas "nearest" (plus proche).
function hexadecagon (mode, x, y, radius) -- identique à la fonction love.graphics.circle
local w1, w2 = math.atan(0.21), math.atan(0.72) -- valeurs magiques
local a = radius
local b = radius*math.sin (w1)
local c = radius*math.cos (w2)
local d = radius*math.sin (w2)
local vertices = {
a, b, c, d, d, c, b, a,
-b, a, -d, c, -c, d, -a, b,
-a,-b, -c,-d, -d,-c, -b,-a,
b,-a, d,-c, c,-d, a,-b}
love.graphics.translate (x+0.5, y+0.5)
love.graphics.polygon (mode, vertices)
love.graphics.translate (-x-0.5, -y-0.5)
end
canvas = love.graphics.newCanvas(width, height)
canvas:setFilter("nearest", "nearest")
love.graphics.setLineStyle("rough")
love.graphics.setCanvas (canvas)
love.graphics.setColor (0,1,0)
hexadecagon ("line", 200, 100, 60)
love.graphics.setCanvas ()
function love.draw()
love.graphics.setColor (1,1,1)
love.graphics.draw (canvas)
end
Français
Autres langues
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info