4 votes

Rotation des coordonnées en PHP

(Cette question est spécifique à PHP, je sais que ce sujet est abordé dans d'autres langages, mais j'ai des difficultés à l'implémenter en PHP).

J'essaie de faire pivoter les coordonnées x et y d'un élément qui doit être placé sur une image pivotée.

$x & $y sont les coordonnées x,y originales du bloc avant la rotation de l'image.

$width2 & $height2 sont le centre de rotation (qui est le centre de l'image).

$sin & $cos sont le sinus et le cosinus, qui sont obtenus avec sin($radians) et cos($radians) sur le degré de rotation de l'image (d'arrière-plan) (en radians)

function RotatePoints($x,$y,$width2,$height2,$sin,$cos)
    {
    // translate point back to origin:
    $x -= $width2;
    $y -= $height2;

    // rotate point
    $x = $x * $cos - $y * $sin;
    $y = $x * $sin + $y * $cos;

    // translate point back:
    $x += $width2;
    $y += $height2;

    return array($x,$y);
    }

Cette fonction est censée me donner les nouvelles coordonnées du bloc, avec la rotation prise en compte. Mais le positionnement est assez éloigné.

Qu'est-ce que je fais de travers ?

6voto

M42 Points 31888

Vous devez utiliser d'autres variables lorsque vous calculez la rotation, dans votre code :

$x = $x * $cos - $y * $sin;
$y = $x * $sin + $y * $cos;

$x est modifié par la première équation, alors vous utilisez une mauvaise valeur de $x dans la seconde.

Modifier en :

$temp_x = $x * $cos - $y * $sin;
$temp_y = $x * $sin + $y * $cos;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X