ある点を中心にして座標を回転させる関数です。
引数は ( 軸 x1, 軸 y1, x2, y2, 角度, 整数化, 時計回り ) です。
座標は通常反時計回りに回転するので、逆回転させる場合は第 7 引数を true にして下さい。

<?php
print_r( point_rotate(50, 50, 100, 100, 30, true) );
function point_rotate($x1, $y1, $x2, $y2, $angle, $round = false, $clockwise = false){
if($clockwise) $angle = -1 * $angle;
$r = sqrt( pow($x2 - $x1, 2) + pow($y2 - $y1, 2));
$angle = deg2rad($angle);
$x = ($x2 - $x1) * cos($angle) - ($y2 - $y1) * sin($angle);
$y = ($x2 - $x1) * sin($angle) + ($y2 - $y1) * cos($angle);
if($round){
return array(round($x1 + $x), round($y1 + $y));
} else {
return array($x1 + $x, $y1 + $y);
}
}
