Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.011 c
6-63291
Кен
2003-11-12 07:09
2004.01.20
TWebBrowser Как сделать, чтобы у него появилось такое же меню,


7-63429
Ivolg
2003-11-03 15:22
2004.01.20
Контекстное меню


7-63410
ФЫ
2003-10-23 22:52
2004.01.20
дисковод


3-62997
ZHK
2003-12-23 14:17
2004.01.20
Подчиненные запросы и MySQL


3-62971
HolyMan
2003-12-24 22:00
2004.01.20
Вопрос по BLOB полям...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский