![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jul 2004
Сообщений: 430
|
Народ, подскажите как правильно сделать:
1.Допустим есть объект, который движеться из точки А в точку Б. 2.Интересно было бы сделать, чтобы движение объекта было не по-прямой, а хаотически - допустим из стороны в сторону (синусуйду не рассматриваем), но всеже сохраняя данную траекторию. Подскажите правильный подход. Если есть дайте примерчик... Спасибо... ![]() |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
У вас есть вектор движения, его разбиваете на проекции X и Y, задавая на каждом шаге новое случайное значение для каждой проекции от 0 до максимального расстояния за шаг (при условии, что на данной проекции объект не достиг конечной координаты), вы получите хаотичное движение
|
|
|||||
|
Регистрация: Jul 2004
Сообщений: 430
|
так, если вектор движения - прямая, то относительно чего строить проекции??? я не совсем понимаю к сожалению, данные мат.выкладки...
|
|
|||||
|
Последний раз редактировалось MrPoma; 12.02.2008 в 18:11. |
|
|||||
|
Modus ponens
|
Вектор и прямая -- это разные вещи %)
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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|