smoq2 napisał(a):Potrzebuję pomocy matematyka albo fizyka:
http://www.gsc-game.com/index.php?t=com ... offset=-60
Jutro przetłumaczę o co chodzi, bo dzisiaj już mnie czas goni, a na chwilę obecną prośba jest po angielsku.
r=100; - odległość pomiędzy aktorem a NPCem
azimuth=10; /*kąt poziomy pomiędzy aktorem a NPCem (w stopniach)*/
elevation=10; /*kąt pionowy pomiędzy aktorem a NPCem (w stopniach)*/
FOV=67.5; /*w stopniach default_device().fov*/
screenWidth=1024;
screenHeight=768;
/* przerabiamy stopnie na radiany. Można pominąć jeśli masz kąty od razu w radianach. Można skorzystać z funkcji math.rad() w LUA */
rad_azimuth = azimuth * Math.PI / 180;
rad_elevation = (90-elevation) * Math.PI / 180;
rad_FOV = FOV * Math.PI / 180;
/*wyliczmy pozycję NPCa względem aktora przy uwzględnieniu kąta patrzenia */
pos_z= r * Math.cos(rad_azimuth) * Math.sin(rad_elevation);
pos_x= r * Math.sin(rad_azimuth) * Math.sin(rad_elevation);
pos_y= r * Math.cos(rad_elevation);
/* obliczmy ogniskową */
focalLength = screenWidth/2 * (Math.cos(rad_FOV/2) / Math.sin(rad_FOV/2));
/*obliczamy pozycję na ekranie, gdzie 0,0 to lewy górny róg */
screen_x=pos_x*(focalLength/pos_z);
screen_y=pos_y*(focalLength/pos_z);
/* przesuwamy pozycję na środek ekranu */
obj._x=Math.round(screen_x+(screenWidth/2)); /* dla panoramicznych powinno być chyba dodatkowo *1.25 */
obj._y=Math.round((screenHeight/2)-screen_y);
FATAL ERROR
[error]Expression : error handler is invoked!
[error]Function : handler_base
[error]File : E:\priquel\sources\engine\xrCore\xrDebugNew.cpp
[error]Line : 742
[error]Description : illegal instruction
stack trace:
0023:060A1567 xrGame.dll
0023:004193C1 xrEngine.exe, CEffectorPP::CEffectorPP()
0023:0634DDA8 xrGame.dll, CxImage::`copy constructor closure'()
0023:063D1F74 xrGame.dll
Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 5 gości