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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > Общие вопросы

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 22.08.2004, 19:35
7by вне форума Посмотреть профиль Отправить личное сообщение для 7by Посетить домашнюю страницу 7by Найти все сообщения от 7by
  № 1  
7by
 
Аватар для 7by

Регистрация: Jan 2004
Адрес: Flash
Сообщений: 22
Tools Пртитягивающиеся и отталкивающиеся магнитики

Помогите пожалуйста сделать притягивающиеся и отталкивающиеся магнитики. Т.е. чтобы разноимёнными полюсами они притягивались, а одноимёнными - отталкивались. Прилогается исходник. Подправте что надо и вышлите мне на мыло. Очень прошу. Зарание споооосибо.
Вложения
Тип файла: zip untitled.zip (3.7 Кб, 105 просмотров)
__________________
Все не так легко, как кажется. :)

Старый 24.08.2004, 00:45
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 2  
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
ну делаешь точку, делаешь обьект, вычисляешь дистанцию (длинну вектора)б чем короче дистанция, тем выше притяжение, незнаю точной формулы, но можно использовать что-то вроде:

max_speed=5;
speed=max_speed/distance;

ну и сделать радиус действия поля притяжения:

max_speed=5;
if(distance<100){
speed=max_speed/distance;
}
else{
speed=0;
}

дистанция расчитывается по формуле:

distance=Math.sqr(Math.pow((Math.abs(x1)-Math.abs(x2)),2)+Math.pow((Math.abs(y1)-Math.abs(y2)),2));

где координаты точки притяжения: x1,y1
и координаты центра обьекта: x2,y2
сокращение дистанции производится по следующей вормуле:

angle=Math.asin((Math.abs(y1)-Math.abs(y2));
xspeed=Math.cos(angle)*speed
yspeed=Math.sin(angle)*speed
if(x1<x2){xspeed=-xspeed}
if(y1<y2){yspeed=-yspeed}
x2+=xspeed;
y2+=yspeed;

в итоге получаем:

max_speed=5;

distance=Math.sqr(Math.pow((Math.abs(x1)-Math.abs(x2)),2)+Math.pow((Math.abs(y1)-Math.abs(y2)),2));

if(distance<100){
speed=max_speed/distance;
}
else{
speed=0;
}

angle=Math.asin((Math.abs(y1)-Math.abs(y2));
xspeed=Math.cos(angle)*speed
yspeed=Math.sin(angle)*speed
if(x1<x2){xspeed=-xspeed}
if(y1<y2){yspeed=-yspeed}
x2+=xspeed;
y2+=yspeed;
__________________
I'm only happy when it rains.
Waka Laka

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

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

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


 


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


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