Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=7)
-   -   Можно ли..... (http://www.flasher.ru/forum/showthread.php?t=45162)

ЛОWАДКА 21.05.2003 13:06

Можно ли.....
 
........двигать рыбку по траектории чтоб она прижималась к этой самой траэктории тобишь смотрела всегда носом по этой самой траэктории! Да, можно! :))))))))

А можно ли сделать эту траэкторию случайной? Или это нужно продумывать ее движения и задавать ограничения?

Useless 21.05.2003 15:51

Конечно, можно.

Задаёшь случайный угол поворота (небольшой), поворачиваешь рыбу на этот угол, и сдвигаешь в соответствующем направлении (координаты считаешь через тангенс).

А ещё лучше - сделать случайным не угол поворота, а угловую скорость - плавнее будет.

Ales 21.05.2003 16:02

Useless это так если не важна конечная точка рыбки.
А если надо чтобы она из точки А в точку В, это сложнее.

ЛОWАДКА 21.05.2003 16:19

Вот именно! Можно конечно всегда двигать ее вперед на поворотах замедлять и поворачивать программно! Но вот она должна крутиться в прямоугольном экранчике! Например то отдалялась то приближалась к центральной точке! Можно конечно сделать на основе вертикальных и горизонтальных ограничений! типа заплыла за край так пусть двигается в квадрату! А в квадратике пусть уже включается "свободное плвавание"! Просто может это можно сделать кврасивее чем умножать на дохрена разных коэфициэнтов!

Useless 21.05.2003 16:26

Ох, блин...
Предупреждать же надо.

Тогда - наоборот. Пусть она по рандому колбасится вокруг центральной точки, а крутить её - исходя из линейной скорости
Код:

angle = Math.atan2( vy, vx );

ЛОWАДКА 21.05.2003 16:33

Погодь!vx - линейная скорость по иксу а vy - по игреку?
но насколько я понял ее колбасить нужно плавненько, тобишь програмно сглаживать повороты! кстати это лучше всего делать на разнице приращений икса и игрека? типа делить оставшееся расстояние на 2 например!

greyshaman 21.05.2003 23:58

а поискать
или вот попереводи :)
fs = [[], [], [], [], [], [[]], [[]], [], _root, "onEnterFrame", 0, 5, undefined, "clear", undefined, "unshift", "pop", "length", Math, "sin", "cos", "sqrt", "lineStyle", "moveTo", "lineTo"];

for (fs[12]=fs[10]; fs[12]<fs[11]; fs[12]++) {
fs[5][fs[12]]=new Array(24);
fs[6][fs[12]]=new Array(24);
}

fs[8][fs[9]] = function() {
fs[8][fs[13]]();
for (fs[12]=fs[10]; fs[12]<fs[11]; fs[12]++) {
if ((fs[1][fs[12]]++) == fs[2][fs[12]]) {
fs[2][fs[12]]=random(6)+6;
fs[3][fs[12]]=random(9)+3;
fs[4][fs[12]]=random(3)-1;
fs[1][fs[12]] = fs[10];
}
fs[5][fs[12]][fs[15]](fs[5][fs[12]][1]+4*fs[18][fs[20]]((fs[7][fs[12]]+=fs[4][fs[12]]*fs[3][fs[12]])
*0.0174532925199433));
fs[6][fs[12]][fs[15]](fs[6][fs[12]][1]+4*fs[18][fs[19]](fs[7][fs[12]]*0.0174532925199433));
if (200<fs[18][fs[21]]((fs[5][fs[12]][1])*(fs[5][fs[12]][1])+(fs[6][fs[12]][1])*(fs[6][fs[12]][1]))) {
fs[5][fs[12]][1]=fs[6][fs[12]][1] = fs[10];
}
if (fs[5][fs[12]][fs[16]]() != fs[6][fs[12]][fs[16]]()+1000) fs[14] = fs[10];
do {
fs[8][fs[22]]((50-fs[14]*2)/5,0xddff99,(120-fs[14]*4));
fs[8][fs[23]]((fs[5][fs[12]][fs[14]]+200),(fs[6][fs[12]][fs[14]]+200));
fs[8][fs[24]]((fs[5][fs[12]][fs[14]]+200.25),(fs[6][fs[12]][fs[14]]+200.25));
} while (fs[5][fs[12]][fs[17]] > fs[14]++);
}
}

ЛОWАДКА 22.05.2003 01:12

Ух ты ж блять! :eek: :eek: :eek: :eek: :eek: :confused: :confused: :confused: :confused:

Ладно поразбираюсь! Только что-то он жутко тормозит! был вроде код! Причем по-моему твой, где сперматозоиды в банке гонались! :)))))

Ales 22.05.2003 01:53

О да, код еще тот!
Както разбираться не очень хочеться. :) :)

greyshaman 22.05.2003 02:13

да как поизвращался а Расчленитель догнал.

тебе надо это

rad = Math.PI/180

это зависит от реализации заполняется массив координат
а там как ума хватит

//==определяешь границы
if(в пределах границы){f++}else{z=1;};
//ограничивать проще всего кубом или цилиндром

//вычисляешь следующие координаты
if (f>=c) {
c = random(6)+1;
da = random(12)+3;
z = random(3)-1;
f = 0;
}
angle += z*da;
xcoord += 3*Math.cos(angle*rad);
zcoord += 3*Math.sin(angle*rad);
//==============

//==добавляешь камеру смотрящую в 0 0 0 так вычислений
//==меньше или по настроению;
//==ycoord можно сделать переменным, можно константой
//==по барабану.

Screenx = FOCAL_DISTANCE * xcoord / zcoord;
Screeny = FOCAL_DISTANCE * ycoord / zcoord;

и все еш шоколад


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

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