![]() |
|
||||||||||
|
|||||
|
Регистрация: 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;
}
|
|
|||||
|
Banned
[+5 08.09.07]
[+4 17.01.08] Регистрация: 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. |
|
|||||
|
Регистрация: 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;
}
|
|
|||||
|
Banned
[+5 08.09.07]
[+4 17.01.08] Регистрация: Dec 2005
Сообщений: 556
|
зря вы не любите математику. взяли бы выражение для длины дуги спирали и посчитали бы необходимое приращение угла
|
![]() |
![]() |
Часовой пояс GMT +4, время: 10:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|