Движение символа по окружности

 
0
 
JavaScript
ava
Mpak | 09.08.2007, 03:45
Привет Всем!
То есть нули он вообще перескакивает. Не могу понять как определить функцию в нулях.
Вот исходный код:

<div id='cir' style="position:absolute; top:100; left:500; z-index:10000; color:green"><b>O</b></div>

<script language="JavaScript">
var __X = document.body.clientWidth/2;
var __Y = document.body.clientHeight/2;
var r = 50;
var X = (-1)*r;
var Y = 0;
var rl = 1;
var Speed = 10;

function circle() {
if (rl == 1)
{ Y = Math.sqrt(r*r - X*X);
X += 1; }
else
{ Y = (-1)*Math.sqrt(r*r - X*X);
X += -1; }

if ( X == r)
{ rl = 0;
X = r;
Y = 0;
}
if (X == (-1)*r )
{ rl = 1;
X = (-1)*r;
Y = 0;
}

document.all["cir"].style.left = X + __X;
document.all["cir"].style.top = Y + __Y;
setTimeout("circle()", Speed);
}

circle ();
</script>
Comments (2)
ava
AKS | 09.08.2007, 07:40 #
Mpak, я в математике ничего не понимаю, но могу поделиться одним книжным примерчиком плавного движения по окружности:

var __X = document.body.clientWidth / 2;
var __Y = document.body.clientHeight / 2;
var radius = 100;
var x_begin = -1 * radius;
var y_begin = 0;
var angle = 0;
var rad_comp = Math.PI / 180;
var sin = Math.sin;
var cos = Math.cos;

function circle() {
angle += 2;
if (angle >= 360) {
angle = 0;
};
var X = x_begin + radius * sin(angle * rad_comp);
var Y = y_begin + radius * cos(angle * rad_comp);
document.all['cir'].style.left = X + __X;
document.all['cir'].style.top = Y + __Y;
};

window.setInterval(circle, 50);
ava
Mpak | 09.08.2007, 12:57 #
AKS, благодарю, помогло smile
Я задавал движение по окружности по декартовым координатам, а этот пример использует полярные. А в них (полярных координатах) функцию описать легче... smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  AKS   Mpak
advanced
Submit