Главная страница
    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.45 MB
Время: 0.01 c
1-63243
Iceburger
2004-01-09 09:47
2004.01.20
MDI-приложения


1-63224
Dantis
2004-01-09 12:11
2004.01.20
Linux Unix


14-63402
Holy
2003-12-27 11:47
2004.01.20
Уходящий год


3-63025
eds
2003-12-22 11:34
2004.01.20
Возможно ли сделать доступ к БД в формате DBF многопользовательск


1-63108
Anatoliy
2004-01-08 09:00
2004.01.20
Искуственный Интеллект на Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский