forked from: パラメトリック曲面のトーラスじゃない物
forked from パラメトリック曲面のトーラスじゃない物 (diff: 2)
ActionScript3 source code
/**
* Copyright akamario ( http://wonderfl.net/user/akamario )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4yTy
*/
// forked from kuma360's パラメトリック曲面のトーラスじゃない物
package
{
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
[SWF(backgroundColor=0)]
public class Main extends Sprite
{
public function Main():void
{
const COLOR:uint = 0xFFA0D0 ;
const SCALE:Number = 40 ;
const STEP:Number = .1;
var x:Number;
var y:Number;
var z:Number;
var p:Number = 0 ;
var p1:Number = 0 ;
var p2:Number = 0 ;
var v:Vector3D = new Vector3D ;
var m:Matrix3D = new Matrix3D ;
var s:Sprite = new Sprite ;
var g:Graphics = s.graphics;
addChild ( s ) ;
addEventListener (
Event.ENTER_FRAME ,
function ( e:Event ) :void {
var t:Number = getTimer() * .1 ;
g.clear() ;
g.lineStyle ( 1 , COLOR , 1 ) ;
var b:Number = 0 ;
for ( p1 = 0 ; p1 < 2 * Math.PI ; p1 += STEP ) {
for ( p2 = 0 ; p2 < 2 * Math.PI ; p2 += STEP ) {
x = Math.cos(p2) * ( 1.8 + Math.cos(p1) ) ;
y = Math.sin(p2) * ( 1.8 + Math.cos(p1) ) ;
z = Math.sin(p1) + p2 ;
x *= SCALE ;
y *= SCALE ;
z *= SCALE ;
m.identity () ;
m.appendRotation ( t , Vector3D.Y_AXIS ) ;
m.appendRotation ( t * .1 , Vector3D.X_AXIS ) ;
v = m.transformVector ( new Vector3D ( x , y , z ) ) ;
if ( 0 == p2 ) {
g.moveTo ( v.x + 230 , v.y + 230 ) ;
} else {
g.lineTo ( v.x + 230 , v.y + 230 ) ;
}
}
}
}
) ;
}
}
}