Вращение координат в PHP - PullRequest
       11

Вращение координат в PHP

3 голосов
/ 05 января 2012

(Этот вопрос относится к PHP, я знаю, что это обсуждается на других языках, но у меня возникают проблемы с его реализацией в PHP.)

Я пытаюсь повернуть координаты x и y объекта, который должен быть помещен в повернутое изображение.

$x & $y - исходные координаты x, y блока до поворота изображения.

$width2 & $height2 - центр вращения (центр изображения).

$sin & $cos - синус и косинус, которые получаются с sin($radians) и cos($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);
    }

Предположительно, эта функция должна дать мне новые координаты блока с учетом поворота. Но позиционирование довольно далеко.

Что я делаю не так?

1 Ответ

4 голосов
/ 05 января 2012

Вы должны использовать другие переменные при вычислении поворота, в вашем коде:

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

$ x изменяется первым уравнением, тогда вы используете неправильное значение $ x во втором.

Изменить на:

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