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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

Регистрация: Jul 2004
Сообщений: 430
Question хаотическое движение из точки в точку

Народ, подскажите как правильно сделать:

1.Допустим есть объект, который движеться из точки А в точку Б.

2.Интересно было бы сделать, чтобы движение объекта было не по-прямой, а хаотически - допустим из стороны в сторону (синусуйду не рассматриваем), но всеже сохраняя данную траекторию.

Подскажите правильный подход. Если есть дайте примерчик...
Спасибо...

Старый 11.02.2008, 23:13
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
У вас есть вектор движения, его разбиваете на проекции X и Y, задавая на каждом шаге новое случайное значение для каждой проекции от 0 до максимального расстояния за шаг (при условии, что на данной проекции объект не достиг конечной координаты), вы получите хаотичное движение
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 12.02.2008, 17:52
quazare вне форума Посмотреть профиль Отправить личное сообщение для quazare Найти все сообщения от quazare
  № 3  
Ответить с цитированием
quazare
 
Аватар для quazare

Регистрация: Jul 2004
Сообщений: 430
так, если вектор движения - прямая, то относительно чего строить проекции??? я не совсем понимаю к сожалению, данные мат.выкладки...

Старый 12.02.2008, 18:06
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 4  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код:
var deg:Number = 45;
var radius:Number = 10;

var dx:Number = Math.sin(deg * (Math.PI/180)) * radius;
var dy:Number = Math.cos(deg * (Math.PI/180)) * radius;


Последний раз редактировалось MrPoma; 12.02.2008 в 18:11.
Старый 12.02.2008, 18:26
Ravanger вне форума Посмотреть профиль Отправить личное сообщение для Ravanger Найти все сообщения от Ravanger
  № 5  
Ответить с цитированием
Ravanger
 
Аватар для Ravanger

Регистрация: Aug 2007
Адрес: Ukraine, Kiev
Сообщений: 66
Цитата:
так, если вектор движения - прямая, то относительно чего строить проекции???
относительно осей координат

для примера картинка
__________________
Haurit aquam cribro, qui discere vult sine libro

Старый 12.02.2008, 18:37
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Вектор и прямая -- это разные вещи %)
Код:
import flash.geom.Point;
var a:Point;
var b:Point;
var canvas:MovieClip;
var a_mc:MovieClip;
var b_mc:MovieClip;
var counter:Number = 0;
function dFunc(p:Number):Point {
	return new Point(a.x + p*modifier(p)*(b.x-a.x), a.y + p*modifier(p)*(b.y-a.y));
}
function modifier(n:Number):Number {
	var r_n:Number;
	if(n<=.5){
		r_n = 1 + Math.random()*n;
	} else {
		r_n = 1 + Math.random()*(n - 1);
	}
	return r_n;
}
function crl(mc:MovieClip, r:Number, c:Number, a:Number):MovieClip {
	var _mc:MovieClip = mc.createEmptyMovieClip("crl"+mc.getNextHighestDepth(), mc.getNextHighestDepth());
	var c1:Number = r*(Math.SQRT2-1);
	var c2:Number = r*Math.SQRT2/2;
	var d:Number = r*2;
	_mc.beginFill(c,a);
	_mc.moveTo(d,r);
	_mc.curveTo(d,r+c1,r+c2,r+c2);
	_mc.curveTo(r+c1,d,r,d);
	_mc.curveTo(r-c1,d,r-c2,r+c2);
	_mc.curveTo(0,r+c1,0,r);
	_mc.curveTo(0,r-c1,r-c2,r-c2);
	_mc.curveTo(r-c1,0,r,0);
	_mc.curveTo(r+c1,0,r+c2,r-c2);
	_mc.curveTo(d,r-c1,d,r);
	_mc.endFill();
	return _mc;
}
//-------- init scene -----------//
a = new Point(Math.random()*Stage.width, Math.random()*Stage.height);
b = new Point(Math.random()*Stage.width, Math.random()*Stage.height);
canvas = this.createEmptyMovieClip('canvas', this.getNextHighestDepth());
canvas.lineStyle(1, 0xffff);
canvas.moveTo(a.x, a.y);
a_mc = crl(this, 5, 0xff, 100);
a_mc._x = a.x-5;
a_mc._y = a.y-5;
b_mc = crl(this, 5, 0xff, 100);
b_mc._x = b.x-5;
b_mc._y = b.y-5;
//-------- animate ----------//
this.onEnterFrame = function():Void {
	var p:Point;
	if(counter<1){
		counter += .01;
		p = dFunc(counter);
		canvas.lineTo(p.x, p.y);
	} else {
		delete this.onEnterFrame;
	}
}
Вот так, например
__________________
Hell is the possibility of sanity

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

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

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


 


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


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