楕円運動アニメクラス

楕円運動アニメクラス本丸三階移動位置計算 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
*/
?>