楕円運動アニメクラス
楕円運動アニメクラス本丸三階移動位置計算 PHP ファイル
cir_oval_cla.php
MoveImage に戻る
<?php
class Oval {
// メンバ変数(プロパティ)、
//アクセス修飾子付与
private $we;
private $a;
private $i;
private $yn;
private $xn;
private $y;
private $x;
// コンストラクタ
protected
function __construct ($oval)
{
$this->_r = $oval['r'];
$this->_v = $oval['v'];
$this->_vy = $oval['vy'];
$this->_k = $oval['k'];
$this->_n = $oval['n'];
$this->_cx = $oval['cx'];
$this->_cy = $oval['cy'];
$this->_dr = $oval['dr'];
$this->_ic = $oval['ic'];
$we="";
if($this->_ic == 1){
$we="-webkit-";
}
$a =
($this->_k) / ($this->_n);
for
($i=0;$i<=($this->_n);$i++)
{
$y =
($this->_dr) * ($this->_r) *
sin(deg2rad(($this->_v) +
$a*$i));
$x =
($this->_r) *
cos(deg2rad(($this->_v) +
$a*$i));
// 楕円を$vy°回転
$yn =
$x*sin(deg2rad($this->_vy))
+ $y*cos(deg2rad($this->_vy));
$xn =
$x*cos(deg2rad($this->_vy))
- $y*sin(deg2rad($this->_vy));
// 中心からの位置に移動
$y = ($this->_cy) + $yn;
$x = ($this->_cx) + $xn;
echo
$i*(100/($this->_n)).
"%{".$we.
"transform:translate(".
$x."px,".$y."px);}";
} //for $i END
} //function __construct END
} //class circle End
/*
r:半径
v:スタート角度、
dr = + の時
0時位置から時計方向に
動かす時は270
3時スタートは0
6時スタートは90
9時スタートは180
実際のスタ-ト位置は楕円の傾斜角度分
反時計方向に移動します。
0時位置からスタートはさせるべく、
$v=270 としても
$vy(楕円の傾斜角度)を90とすると
3時の位置からスタートします。
dr = - の時
0時位置から時計方向に
動かす時は90
3時スタートは0
6時スタートは270
9時スタートは180
vy:楕円の傾斜角度、+で右肩下がり
(時計方向に傾斜)
k:周る角度、一周するときは360
n:分割数、15ぐらいでよい、
大きいほど楕円に近づく
cx:円の中心 X座標
cy:円の中心 Y座標
0%の X Y座標は
0時スタートは cx cy-r
3時スタートは cx+r cy
6時スタートは cx cy+r
9時スタートは cx-r cy
dr: 円の時、時計まわりは→ 1、
反時計まわりは→ -1
[重要] 1 以外の数値を入れると楕円
[例]
-2<$dr<-1 反時計まわり、縦長
-1<$dr<-0.4 反時計まわり、横長
0.4<$dr<1 時計まわり、横長
1<$dr<2 時計まわり、縦長
ic:ieとChromeの区別
0→ie 1→Chrome
*/
?>