[PHP]回転軸を指定して座標を回転させる

Pocket

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

rotate

<?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);
	}
}

Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です