Clipping de droite par un rectangle

Comment déterminer l'intersection d'une demi-droite avec le périmètre d'un rectangle dans lequel l'origine de la demi-droite est situé, sans nécessairement que ce soit au centre de ce rectangle ?
figure0
Ce problème de découpage (ou "clipping") est assez classique. Plus généralement, il se rencontre quand il s'agit de découper un polygone dès qu'il sort d'une surface de rendu, parce qu'il faut déterminer précisément les coordonnées des sommets résultant du découpage et/ou plus basiquement parce qu'il faut optimiser le rendu en le limitant à ce qui est visible.

Continuer la lecture de "Clipping de droite par un rectangle"

Clipping de droite par un rectangle

Enveloppe régulière d’un polygone quelconque

Comment calculer les coordonnées des points formant une enveloppe régulière d'un polygone quelconque, c'est-à-dire une version plus grande ou plus petite du polygone qui semble parfaitement s'emboîter avec ce dernier (enveloppe homothétique) ? :
Enveloppe homothétique d'un polygone
Le parfait emboîtage de l'enveloppe et du polygone tient au fait que la distance entre un sommet du polygone et le sommet correspondant de l'enveloppe est constante.
Calculer les coordonnées des sommets de l'enveloppe par simple application d'un facteur d'agrandissement aux coordonnées des sommest du polygone ne permet pas de parvenir au résultat souhaité. En effet, un tel facteur ne pourrait s'appliquer qu'autour d'un centre, c'est-à-dire un point qui devrait se trouver à égale distance de tous les sommets du polygone pour entraîner un éloignement ou un rapprochement de la distance attendue des sommets correspondants de l'enveloppe.
Or l'existence d'un ensemble de cercles de même rayon, centrés sur chacun des sommets du polygone, qui se recoupent en un unique point constituant ce centre, n'a rien de systématique. En fait, ce n'est le cas que pour des polygones très particuliers :
Possibilité d'enveloppe homothétique par agrandissement
Dans les autres cas, on constate en pratique qu'il est impossible de trouver ce jeu de cercles qui se recoupent en un même point. Ainsi, sur cet exemple, il serait impossible de positionner l'enveloppe résultant de la simple application d'un facteur d'agrandissement de sorte que les sommets de l'enveloppe se trouvent même à une distance constante des sommets du polygone auxquels ils correspondent :
Impossibilité d'enveloppe homothétique d'un polygone par agrandissement
Continuer la lecture de "Enveloppe régulière d’un polygone quelconque"
Enveloppe régulière d’un polygone quelconque

Atténuation selon la loi en carré inverse (1/R²)

Comment produire un effet de ralentissement du mouvement réaliste ? La solution qui vient spontanément à l'esprit n'est pas réaliste : elle consiste à faire décroître la vitesse du mouvement de manière linéaire. Dans la réalité, le ralentissement est très fort au début et très faible à sa fin, donnant l'impression d'un amortissement :
Atténuation en 1/R²

Continuer la lecture de "Atténuation selon la loi en carré inverse (1/R²)"

Atténuation selon la loi en carré inverse (1/R²)

Normale en un angle d’un polygone

Comment déterminer les coordonnées de la normale en un angle d'un polygone ? En disposer est très utile pour appliquer une déformation homothétique au polygone. En effet, c'est est le long de ces normales qu'il est possible de déplacer les sommets du polygone pour produire des versions de ce dernier parfaitement emboîtées (enveloppes homothétiques) :
Enveloppe homothétique d'un polygone

Continuer la lecture de "Normale en un angle d’un polygone"

Normale en un angle d’un polygone