Форум: "Игры";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Внизнайти вектор A->B Найти похожие ветки
← →
PsyhoBlob (2005-05-18 23:35) [0]Есть A(X1,Y1) B(X2,Y2), ну и Angle, мне наверное мозги в детстве ампутировали но я незнаю как сделать так чтобы в Angle было занчение которое-бы при X1=Sin(Angle) Y1=Cos(Angle) указывало на B.
Короче есть мужик с пушкой и есть страшный монстр, надо чтобы мужик направил пушку на монстра.
Там примеры библиотеки или еще чегонить.
PS: просьба только страыми формулами не кидатся, а то у меня последние 3 нейрона в кому впадут
← →
XProger © (2005-05-19 00:05) [1]Angle = ArcTan((Y1 - Y2)/(X1 - X2 + 0.0000001));
0.0000001 - делить на 0 нельзя! ;)
← →
PsyhoBlob (2005-05-19 00:13) [2]Спасибо. я даже почти понял :)
Так а если немного усложнить и добавить еще Z, это я так на будующее хотел-бы узнать, языков знаю кучу а с математикой труба
← →
XProger © (2005-05-19 01:21) [3]PsyhoBlob, если добавить Z, то одним углом ты не обойдёшься :)
← →
PsyhoBlob (2005-05-19 05:38) [4]XProger ну понятно что нужно наверное два, чтото типа полярных координат
← →
OSokin © (2005-05-19 21:27) [5]
var
p:TPoint;
angle:integer;
begin
GetCursorPos(p);
p.x:=p.x-mainx+16;
p.y:=-(p.y-mainy+16);
if (pl[0].diei=0)and(not(win)) then begin
angle:=-round(radtodeg(arcsin(p.x/sqrt((sqr(p.x)+sqr(p.y))))));
if p.y<0 then angle:=180-angle;
if angle>360 then angle:=angle-360;
if angle<0 then angle:=angle+360;
Здесь: p.x, p.y - координаты мыши (+16 - для центра курсора), angle - угол (после выполнения кода ставишь его как угол поворота хумана)
← →
PsyhoBlob (2005-05-20 05:24) [6]2OSokin
1)Причем тут координаты мыши.
2)Вообщето вроде как тригонометрию и прочие векторные и подобные операции с углами, вроде как принято делать с типом Single или Double, и использовать радианы.
3)Может я обсолютный дурак но я код понял только до GetCursorPos(p);
А вообще вариант XProgera заработал вот в таком виде:
if X1 < X2 then
Angle := ArcTan((Y1 - Y2)/(X1 - X2 + 0.0000001)) else
Angle := ArcTan((Y1 - Y2)/(X1 - X2 + 0.0000001))+ PI;
← →
LEGIONER75 (2005-05-20 11:15) [7]зАЙДИ НА САЙТ WWW.GLSCENE.ORG ТАМ ЕСТЬ В ПРИМЕРАХ (ДЕМО) ОБРАБОТКА СТОЛКНОВЕНИЙ - cOLLISIONS - ПОМОЕМУ НАЗЫВАЕТСЯ.
← →
Думкин © (2005-05-20 15:45) [8]Надо чтобы соответствующие координаты были пропрциональны:
X1/X2=Y1/Y2
Далее добавим из твоих требований нормирование: X1^2+Y1^2=1
Что тут?
X1 = X2/(X2^2+Y1^2) Y1 = Y2/(X2^2+Y1^2)
Основание то пушки из откуда? Из (0,0)?
Верная формулировка задачи - 95% ее решения. :(
← →
Думкин © (2005-05-20 15:46) [9]> X1 = X2/(X2^2+Y1^2) Y1 = Y2/(X2^2+Y1^2)
точнее
X1 = X2/sqrt(X2^2+Y1^2) Y1 = Y2/sqrt(X2^2+Y1^2)
← →
PsyhoBlob (2005-05-21 01:53) [10]Основание то пушки из откуда? Из (0,0)?
Неважно откуда, можно и приравнивать все к нулю, но это дополнительные расчёты по смещению координат и последующему востановлению
Верная формулировка задачи - 95% ее решения. :(
Bот с формулами и формулировками меня боольшие проблемы :(
А вообще меня сейчас крайне интересует нахождение вектора в 3-ёх мерном пространстве, т.е, одним углом не обойтись, а наверное надо что-то типа ширину\долготу использовать, но даже если я буду знать ширину\долготу, то тогда еще проблема для меня двигать "точку" по координате Z. если X=Cos Y=Sin то чего тогда делать с Z?
← →
Думкин © (2005-05-21 04:47) [11]> PsyhoBlob (21.05.05 01:53) [10]
Причем тут синусы, косинусы?
Все что вы ищете - это по заданному вектору - коллинеарный с длиной 1. Это достигается указанным мной нормированием. Хоть в 100-мерном пространстве.
А насчет всего остального - аналитическая геометрия. Притом вовсе не дебри. Без азов этого вы вечно будете побираться с подобными вопросами.
И синусы, косинусы - есть термин в данном случае - направляющие косинусы. И теоремка про них.
← →
Думкин © (2005-05-21 04:52) [12]И наведите порядок в терминологии.
Все-таки векторное пространство и евклидово - связываются. Но вовсе не одно и тоже.
Потому как у вас вектор OA принадлежащий векторному пространству а точка B - уже элемент евклидова.
Про монстра забавно - но полной картины не дает.
← →
Думкин © (2005-05-21 04:56) [13]> Неважно откуда, можно и приравнивать все к нулю, но это
> дополнительные расчёты по смещению координат и последующему
> востановлению
Важно. Потому как важно - какой вектор нормировать. Если в начале то OB, если в точке E<>O то EB.
И не надо никаих доп. расчетов. Зачем?
← →
PsyhoBlob (2005-05-21 07:36) [14]
> Причем тут синусы, косинусы?
Ну я говорю что полный тормоз в этих делах, меня в школе заставляли спать на математике :)
Ну а насчет синусов и косинусов, я просто знаю что при помощи них можно двигать точку в нужном направлении.
> И наведите порядок в терминологии
У меня и с терминами такиеже проблеммы, буду искать школьные учебники.
> И не надо никаих доп. расчетов. Зачем?
Вот и говорю зачем? Хоть и ничего непонял.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c