Показать сообщение отдельно
Старый 03.10.2012, 14:00
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 1  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
По умолчанию Равномерное распределение объектов на спирали

Есть такой вот код для построения спирали

Код AS3:
import flash.display.Shape;
import flash.display.Graphics;
 
function getSpiral(radius:Number, coils:Number, sides:uint):Shape
{
	var s:Shape = new Shape();
	var canvas:Graphics = s.graphics;
 
	var awayStep:Number = radius/sides;
	var aroundStep:Number = (coils/sides) * 2 * Math.PI;
	var angle:Number = 0;
	var radius:Number = 0;
	var xPoint:Number = 0;
	var yPoint:Number = 0;
 
	for (var i:uint = 0; i < sides; i++)
	{
		radius = i * awayStep;
		angle = i * aroundStep;
 
		xPoint = radius * Math.cos(angle);
		yPoint = radius * Math.sin(angle);
 
		canvas.beginFill(0xFF0000);
		canvas.drawCircle(xPoint, yPoint, 5);
		canvas.endFill();
	}
 
	return s;
}
 
var spiral1:Shape = getSpiral(200, 3, 100);
spiral1.x = int(stage.stageWidth * .5);
spiral1.y = int(stage.stageHeight * .5);
addChild(spiral1);
Получается чем дальше объекты по витку, тем больше между ними (объектами или точками на витке) расстояние. Оно и понятно.

Как разместить объекты равномерно на такой спирали, чтоб все расстояния между объектами были равны?
Т.е. начиная от центра, отмеряем равные расстояния и помещаем в эту точку объект. Понимаю что нужно компенсировать угол в меньшую сторону с каждым витком, но не понимаю как.
__________________
trace("Остановите Землю, я сойду!!!");