Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
_____________________
Кто сегодня посетил сайт: 
 

Форма входа

опрос

Ваше отношение к игре VDG City v.2.0
Всего ответов: 16
Главная » 2011 » Ноябрь » 6 » 3Д сфера
17:41
3Д сфера
http://vdgflash.tk/av-vajax/sfera.swf
Категория: Flash/AS | Просмотров: 454 | Добавил: Vajax | Рейтинг: 0.0/0
Всего комментариев: 3
0  
3 Vajax   (23.12.2011 19:41) [Материал]
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) [Материал]
Выражусь как интеллегент-потрясающе правильно,но угол выбран не совсем точно

+1  
1 Dinastya   (07.12.2011 22:36) [Материал]
Прикольно!Интересна штука!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

VDG City 2D


Об игре

Мини-чат

Оффтоп (сообщения не по работам)