Une ligne épaisse est un polygone. (Oublions anticrénelage pour l'instant)
picture http://img39.imageshack.us/img39/863/linezi.png
start = ligne start = vecteur (x1, y1)
end = fin de ligne = vecteur (x2, y2)
dir = direction de la ligne = fin - start = vecteur (x2-x1, y2-y1)
NDIR = direction normalisée = dir * 1,0/longueur (dir)
perp = perpendiculaire à la direction = vecteur (dir.x, -dir.y)
nperp = perpendiculaire normalisée = perp * 1.0/longueur (perp)
perpoffset = nperp * w * 0,5
diroffset = NDIR * w * 0,5
(Vous pouvez facilement supprimer une normalisation et calculer l'un des décalages en prenant perpendiculairement à partir de l'autre)
P0, P1, p2, p3 = points de polygone:
P0 = start + perpoffset - diroffset
p1 = start - perpoffset - diroffset
p2 = + extrémité perpoffset + diroffset
p3 = fin - perpoffset + diroffset
P.S. Tu es la dernière personne à qui j'expliquerai ce truc. Des choses comme celles-ci doivent être comprises intuitivement.
Un vecteur est toujours, par définition, une belle ligne droite ... C'est même une ligne infiniment longue, belle, droite. Aussi, cinq pixels dans quelle direction? À droite? Le long de la normale à la première ligne? –
S'agit-il de devoirs ou de projets personnels? –
Que voudriez-vous que se produise si la série originale de segments de ligne n'était * pas * simplement une ligne verticale? – SamB