Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

найти вектор 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.06 c
3-1123133145
Nata2
2005-08-04 09:25
2005.09.18
ADOStorecProd


5-1099403917
DmitryA
2004-11-02 16:58
2005.09.18
Блокировка автоматического скроллинга формы


1-1125159399
lkz
2005-08-27 20:16
2005.09.18
Оболочка для вопросов-ответов


3-1122989575
Hose
2005-08-02 17:32
2005.09.18
QR 3.6 Prof и композитный отчет. Как печатать с новой страницы?


14-1124579990
Джо
2005-08-21 03:19
2005.09.18
Что за язык?