var xcoord:Number = 0;// инициализация координат точки var ycoord:Number = 0; var zcoord:Number = 0; var r:Number = stage.stageWidth/4.0;// радиус сферы var time:Number=0;// параметр вращения var angle:Number=0;// еще один параметр вращения
var container:MovieClip = new MovieClip();// "ящик", в который поместим сферу container.x=stage.stageWidth/2; container.y=stage.stageHeight/2; addChild(container);
var points:Array = new Array();// создаем точки for (var theta:uint=0; theta<=180; theta+=5) {//полярный угол сферической системы координат points[theta] = new Array(); for (var phi:uint=0; phi<360; phi+=5) {//азимутальный угол points[theta][phi] = new Sprite();// масив точек points[theta][phi].graphics.lineStyle(); points[theta][phi].graphics.beginFill(0x0000FF); points[theta][phi].transform.colorTransform = changeColor(255*Math.cos(phi*Math.PI/180),255*Math.cos((180-phi)*Math.PI/180),255*Math.cos(phi*Math.PI/180)); points[theta][phi].graphics.drawCircle(0, 0, 1); points[theta][phi].graphics.endFill(); container.addChild(points[theta][phi]); } }
var starter:Timer=new Timer(20); starter.addEventListener(TimerEvent.TIMER, moveSphere);
starter.start();
function moveSphere(e:Event):void {// вращаем сферу
for (var theta=0; theta<=180; theta+=5) { for (var phi=0; phi<360; phi+=5) { xcoord=r*Math.sin(theta*Math.PI/180)*Math.cos((phi+time)*Math.PI/180);// переход к декартовым координатам ycoord=r*Math.sin(theta*Math.PI/180)*Math.sin((phi+time)*Math.PI/180); zcoord=r*Math.cos(theta*Math.PI/180); angle=5*time*Math.PI/180; var x1=xcoord*Math.cos(angle*Math.PI/180)+zcoord*Math.sin(angle*Math.PI/180); var z1=-xcoord*Math.sin(angle*Math.PI/180)+zcoord*Math.cos(angle*Math.PI/180);
var newx=ycoord; var newy=z1; points[theta][phi].x=newx*Math.cos(.3*angle*Math.PI/180)+newy*Math.sin(.3*angle*Math.PI/180); points[theta][phi].y=-newx*Math.sin(.3*angle*Math.PI/180)+newy*Math.cos(.3*angle*Math.PI/180); //прозрачность делаем зависимой от углов для правдоподобия points[theta][phi].alpha=(0.6+0.4*Math.cos((180+phi+time)*Math.PI/180))*theta/100; } } //r=150+20*(Math.cos(2*time*Math.PI/180));//это если захочеся ввести пульсацию сферы time++; //container.rotation=time/5;//можно добавить еще один поворот }
function changeColor(redshift, greenshift, blueshift):ColorTransform { return new ColorTransform(1,1,1,1,redshift,greenshift,blueshift,0); }
var xcoord:Number = 0;// инициализация координат точки var ycoord:Number = 0; var zcoord:Number = 0; var r:Number = stage.stageWidth/2.5;// радиус сферы var time:Number=0;// параметр вращения var angle:Number=0;// еще один параметр вращения
var container:MovieClip = new MovieClip();// "ящик", в который поместим сферу container.x=stage.stageWidth/2; container.y=stage.stageHeight/2; addChild(container);
var points:Array = new Array();// создаем точки for (var theta:uint=0; theta<=180; theta+=5) {//полярный угол сферической системы координат points[theta] = new Array(); for (var phi:uint=0; phi<360; phi+=5) {//азимутальный угол points[theta][phi] = new Sprite();// масив точек points[theta][phi].graphics.lineStyle(); points[theta][phi].graphics.beginFill(0x0000FF); points[theta][phi].transform.colorTransform = changeColor(255*Math.cos(phi*Math.PI/180),255*Math.cos((180-phi)*Math.PI/180),255*Math.cos(phi*Math.PI/180)); points[theta][phi].graphics.drawCircle(0, 0, 1); points[theta][phi].graphics.endFill(); container.addChild(points[theta][phi]); } }
var starter:Timer=new Timer(20); starter.addEventListener(TimerEvent.TIMER, moveSphere);
starter.start();
function moveSphere(e:Event):void {// вращаем сферу
for (var theta=0; theta<=180; theta+=5) { for (var phi=0; phi<360; phi+=5) { xcoord=r*Math.sin(theta*Math.PI/180)*Math.cos((phi+time)*Math.PI/180);// переход к декартовым координатам ycoord=r*Math.sin(theta*Math.PI/180)*Math.sin((phi+time)*Math.PI/180); zcoord=r*Math.cos(theta*Math.PI/180); angle=5*time*Math.PI/180; var x1=xcoord*Math.cos(angle*Math.PI/180)+zcoord*Math.sin(angle*Math.PI/180); var z1=-xcoord*Math.sin(angle*Math.PI/180)+zcoord*Math.cos(angle*Math.PI/180);
var newx=ycoord; var newy=z1; points[theta][phi].x=newx*Math.cos(.3*angle*Math.PI/180)+newy*Math.sin(.3*angle*Math.PI/180); points[theta][phi].y=-newx*Math.sin(.3*angle*Math.PI/180)+newy*Math.cos(.3*angle*Math.PI/180); //прозрачность делаем зависимой от углов для правдоподобия points[theta][phi].alpha=(0.6+0.4*Math.cos((180+phi+time)*Math.PI/180))*theta/100; } } //r=150+20*(Math.cos(2*time*Math.PI/180));//это если захочеся ввести пульсацию сферы time++; //container.rotation=time/5;//можно добавить еще один поворот }
function changeColor(redshift, greenshift, blueshift):ColorTransform { return new ColorTransform(1,1,1,1,redshift,greenshift,blueshift,0); }
0
2любитель полежать в ванне(08.12.2011 21:03)
[Материал]
Выражусь как интеллегент-потрясающе правильно,но угол выбран не совсем точно