Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Распределение объектов по периметру окружности 2 (http://www.flasher.ru/forum/showthread.php?t=120297)

3Desian 16.01.2009 16:34

Распределение объектов по периметру окружности 2
 
Всем привет. :)
Есть такая задача:
10 Мувиков нужно равномерно распределить по периметру окружности радиус которой = R. Затем вычеслить bd[i]._x и bd[i]._y.

Я пока обходился ручным вбиванием координат, но получается кривовато и не равномерно.
Итак, кто знает формулу и как из неё выцепить координаты объектов?
Я ищу в инэте, но пока всякую ерунду нахожу. Sin и Cos со мной не дружат. :) А ведь всё должно быть оч просто, на мой взгляд. Заранее спасибо. :drinks:

rxcoder 16.01.2009 18:23

с sin/cos всё просто. напишу не на флеше, разберетесь:

Код:

// радиус
radius=100;

// отступ слева и сверху
posX=200;
posY=200;

// круг разделить на 10 кусков
step=(PI*2)/10;

for(i=0;i<=10;i++){
        x=posX+sin(step*i)*radius;
        y=posY+cos(step*i)*radius;
        // усе, координаты есть
}


3Desian 16.01.2009 19:19

О. Отлично. Буду ковыряться. Большое спасибо.
Я только не понимаю зачем нужен
Код AS1/AS2:

// отступ слева и сверху
posX=200;
posY=200;

:)

Kuruki 16.01.2009 19:26

это центр окружности

rxcoder 17.01.2009 01:33

Напомню, в AS/javascript пишется так:
Math.sin(), Math.cos(), Math.PI

3Desian 17.01.2009 15:42

Очень в тему напоминание. А то у меня не работает... всю голову сломал:wacko: Спасибо за отклик, друзья. :drinks:

rxcoder 18.01.2009 02:28

Да незачто, просто у меня, когда писал пример, под рукой был только PHP редактор, проверял работоспособность этого скрипта вращяя DIV'ы на HTML странице.

3Desian 19.01.2009 11:34

ДРузья... почти работает... но не работает. Т.е. формулы выдают что то, но при этом я не вижу ничего.
Когда я пишу вручную координаты:
Код AS1/AS2:

x1 = -30;
y1 = 0;
z1 = -95;
x2 = -80;
y2 = 0;
z2 = -58;
x3 = -100;
y3 = 0;
z3 = 0;

то всё окэй.
А когда такой код-аналог:
Код AS1/AS2:

centerX=512; //координаты центра
centerY=400;
centerZ=0;
col = 3;    //колличество объектов
rad = 1.6;//радиус
for (i=1; i<=col; i++) {
        step=(Math.PI*2)/col;
        this["x"+i]=centerX+Math.sin(step*i)*rad;
        this["z"+i]=centerZ+Math.cos(step*i)*rad;
        this["y"+i]=0;}

то ни ошибки нет, ничего. Пустота.
Что то с формулой... или с руками моими :) Я засёк показания x1=513, x2=510, x3=512, а мне нужны приблезительно: x1 = -30;x2 = -80;x3 = -100;. Где же поправку делать подскажите плиз? В Мозге - понятно дело... а вот в формуле. :)

lexa2000lexa 19.01.2009 12:01

а если попробывать вот так
Код AS1/AS2:

for (i=1; i<=col; i++) {
        step=(Math.PI*2)/col;
        this["x"+i]._x=centerX+Math.sin(step*i)*rad;
        this["z"+i]._y=centerZ+Math.cos(step*i)*rad;
        this["y"+i]=0;}


3Desian 19.01.2009 12:09

Оооо... вот как заработало:
Код AS1/AS2:

for (i=1; i<=col; i++) {
 
step=(Math.PI*2)/col;
        this["x"+i]=0+Math.sin(step*i)*rad*60;
        this["y"+i]=0;
        this["z"+i]=0+Math.cos(step*i)*rad*60;
}

Я добавил в конце *60 и убрал centerX и centerY. Случайность, но сработала.. Я почти понял всё, кроме rad*60. Почему оно сработало? Т.е. почему именно *60? Когда вручную писал координаты, то не нужно было умножать.

Добавлено через 2 часа 16 минут
В общем всем огромное спасибо. :)


Часовой пояс GMT +4, время: 02:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.