Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2007, 17:37
xMailer вне форума Посмотреть профиль Отправить личное сообщение для xMailer Найти все сообщения от xMailer
  № 1  
Ответить с цитированием
xMailer

Регистрация: Jul 2006
Сообщений: 46
По умолчанию Проставить точки на спирали

Подскажите пожалуйста, не могу сообразить, как на спирали поставить точки через одинаковые интервалы (расстояние) по окружности. Спираль рисую так:

Код:
stop();

var a:Number = 90;
var r:Number = 12;

// алгоритм - 200 шагов по спирали
_mc.lineStyle (20, "0xffffff", 100);
for (var i:Number = 1; i <= 200; i++) {
   r += 0.8;
   a += 6.5;
   x = r * Math.cos (a * Math.PI / 180);
   y = r * Math.sin (a * Math.PI / 180);
  _mc.lineTo (x, y - 12);
}
play(); // в следующем кадре нужно по данному алгоритму поставить точки
вариант расстановки точек, который пытался безуспешно:
Код:
stop();

var a:Number = 90;
var r:Number = 12;
var aprev:Number = 90;
var fpoint:Number = 0;

_mc.lineStyle (20, "0xff0000", 100);
for (var i:Number = 1; i <= 200; i++) {
   r += 0.8;
   a += 6.5;
   x = r * Math.cos (a * Math.PI / 180);
   y = r * Math.sin (a * Math.PI / 180);
 
   // Через каждые 10 градусов - точка
   for (var n:Number = aprev; n < a; n++) {
	   if(fpoint == 10){
		   fpoint = 0;
		   x = r * Math.cos (a * Math.PI / 180);
		   y = r * Math.sin (a * Math.PI / 180);
	  	   _mc.moveTo (x, y - 11);
		   _mc.lineTo (x, y - 12);
	   }
	   fpoint++;
   }
   aprev = a;
}

Старый 17.12.2007, 18:02
aQuestion вне форума Посмотреть профиль Найти все сообщения от aQuestion
  № 2  
Ответить с цитированием
aQuestion
Banned
[+5 08.09.07]
[+4 17.01.08]
 
Аватар для aQuestion

Регистрация: Dec 2005
Сообщений: 556
если расстояние "по окружности" то всё верно. а если "по спирали" - то читайте матчасть

ммм т.е. я имел ввиду было бы нормально где-то так:
Код:
for (var i:Number = 1; i <= 200; i++) {
   r += 0.8;
   a += 6.5;
   x = r * Math.cos (a * Math.PI / 180);
   y = r * Math.sin (a * Math.PI / 180);
 
   // Через каждые 6.5 градусов - точка
		   x = r * Math.cos (a * Math.PI / 180);
		   y = r * Math.sin (a * Math.PI / 180);
	  	   _mc.moveTo (x, y - 11);
		   _mc.lineTo (x, y - 12);
}


Последний раз редактировалось aQuestion; 17.12.2007 в 18:13.
Старый 17.12.2007, 20:35
xMailer вне форума Посмотреть профиль Отправить личное сообщение для xMailer Найти все сообщения от xMailer
  № 3  
Ответить с цитированием
xMailer

Регистрация: Jul 2006
Сообщений: 46
по окружности
Код:
var a:Number = 90;
var r:Number = 100;

_mc.lineStyle (10, "0xffffff", 100);
for (var i:Number = 1; i <= 20; i++) {
   a += 30;
   x = r * Math.cos (a * Math.PI / 180);
   y = r * Math.sin (a * Math.PI / 180);
   _mc.moveTo (x, y);
   _mc.lineTo (x+1, y);
}
по спирали, пока остановился на варианте подсчета расстояния м/д точками спирали, но это не совсем то что надо, т.к. к концу спирали разница в расстояниях м/д точками все равно есть.
Код:
var a:Number = 90;
var r:Number = 12;
var xold:Number = r * Math.cos (a * Math.PI / 180);
var yold:Number = r * Math.sin (a * Math.PI / 180);
var xdis:Number = 0;

for (var i:Number = 1; i <= 500; i++) {
_mc.lineStyle (5, "0xff0000", 100);
   r += 0.8;
   a += 6.5;
   x = r * Math.cos (a * Math.PI / 180);
   y = r * Math.sin (a * Math.PI / 180);
   
   dis=_global.Math.sqrt(Math.pow(x-xold, 2) + Math.pow(y-yold, 2));
   xdis+=dis;
   if(xdis > 20){
	   xdis=0;
	  _mc.moveTo (x, y - 11); 
	  _mc.lineTo (x, y - 12);
   }
   xold = x;
   yold = y;
}

Старый 17.12.2007, 21:27
aQuestion вне форума Посмотреть профиль Найти все сообщения от aQuestion
  № 4  
Ответить с цитированием
aQuestion
Banned
[+5 08.09.07]
[+4 17.01.08]
 
Аватар для aQuestion

Регистрация: Dec 2005
Сообщений: 556
зря вы не любите математику. взяли бы выражение для длины дуги спирали и посчитали бы необходимое приращение угла

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:03.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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