Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение символа по окружности, Как избавиться от скачка в "нуле"? 
V
    Опции темы
Mpak
  Дата 9.8.2007, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: нет
Всего: 7



Привет Всем!
То есть нули он вообще перескакивает. Не могу понять как определить функцию в нулях.
Вот исходный код:
Код

<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> 



--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
AKS
Дата 9.8.2007, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



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);

PM MAIL   Вверх
Mpak
Дата 9.8.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 12.11.2006

Репутация: нет
Всего: 7



AKS, благодарю, помогло  smile 
Я задавал движение по окружности по декартовым координатам, а этот пример использует полярные. А в них (полярных координатах) функцию описать легче...  smile


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.