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

Вниз

преобразование координат   Найти похожие ветки 

 
Sacred ©   (2003-07-03 02:21) [0]

Многоуважаемые, я нуждаюсь в помощи.
у меня такая проблема: вообщем мне нужно по клику мышки на сцене создать объект, динамически объект я создать могу, но столкнулся с проблемой - преобразования координат, тое сть мне надо из экранной системы координат перейти в мировую. Я нашел функцию ScreenToWorld,но она как то странно работает, то есть возвращает тип TAffinevector.
Вы не могли бы рассказать и научить как мне получить в чистом виде x,y,z.
это для того чтобы потом указать объекту position.x и position.y.
Заранее благодарен.
PS работая с компонентами GLScene


 
Asteroid ©   (2003-07-03 02:31) [1]

При обратном преобразовании координат (из экранных в мировые) всегда получается вектор (луч). Все точки этого луча при прямой проекции попали бы в одну экранную точку. Так что тебе надо выбрать одну из точек луча (зная хотя бы удаленность от камеры уже можно ее получить).


 
Kelegorm   (2003-07-03 07:37) [2]

Function ScreenCurPosToWorldPos(X,Y:integer):TPointer;
begin
Result.X := (X - Form1.ClientWidth/2)/(Form1.ClientWidth/2)*WidthScreen;
Result.Y := ((Form1.ClientHeight/2 - Y)/(Form1.ClientHeight/2))*WidthScreen;
end;

Function WorldPosToScreenCurPos(X,Y:Single):TPoint;
begin
Result.X := Round(X*(Form1.ClientWidth/2)/WidthScreen + Form1.ClientWidth/2);
Result.Y := Round(Form1.ClientWidth/2 - Y*(Form1.ClientHeight/2)/WidthScreen);
end;

Думаю, объяснять не надо.

WidthScreen := 8.3.
угол обзора камеры равен Pi/4.
У меня работает.


 
Sacred ©   (2003-07-04 01:59) [3]

Спасибо за ответы...но сделал вот так...получил вектор
vecOfWSC := GLSceneViewer1.Buffer.ScreenToWorld(x,y);

а потом просто
Position.X := vecOfWSC[0]*10;
Position.Y := vecOfWSC[1]*10;
видимо 10 это коэффициент масштабности, потому что без него объект рисуеться уж слишком близко около центра, а с ним рисуется там где кликаю...


 
Kelegorm ©   (2003-07-04 12:41) [4]

Но ведь похоже? Там надо подобрать коофиценты масштабности, а ткже разброса, и будет всё круто!


 
voland   (2003-07-06 16:18) [5]

Kelegorm посмотри ясчик(мыло).



Страницы: 1 вся ветка

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
14-63351
Serzh ML
2003-12-29 22:31
2004.01.20
boot loader


3-63035
gleb
2003-12-22 13:07
2004.01.20
dbgrid


3-62988
loki128
2003-12-23 13:50
2004.01.20
Внутреннее соединение таблиц


11-63045
=Sniper=
2003-05-04 12:32
2004.01.20
Editbox и Combobox


8-63260
ChekhlatyAndrew
2003-09-15 20:24
2004.01.20
захват изображения с WEB - камеры