CalcScreenCoors

Статус
В этой теме нельзя размещать новые ответы.

deathBit

Новичок
Автор темы
5
0
так что я перенесен эту функцию для скриптового языка
но это иногда не работает например, когда точка не видна vecScreen->fX и vecScreen->fY показывает отрицательное значение или больше, чем screen (x,y)-sizes
а когда смотрю в противоположное направление функця показывает что точка на экране, но она вообще не видна
Код:
void CGraphics::CalcScreenCoors ( CVector * vecWorld, CVector * vecScreen )
{
    /** C++-ifyed function 0x71DA00, formerly called by CHudSA::CalcScreenCoors **/
 
    // Get the static view matrix as D3DXMATRIX
    D3DXMATRIX m ( (float*)(0xB6FA2C) );
 
    // Get the static virtual screen (x,y)-sizes
    DWORD *dwLenX = (DWORD*)(0xC17044);
    DWORD *dwLenY = (DWORD*)(0xC17048);
 
    // Do a transformation
    vecScreen->fX = vecWorld->fZ * m._31 + vecWorld->fY * m._21 + vecWorld->fX * m._11 + m._41;
    vecScreen->fY = vecWorld->fZ * m._32 + vecWorld->fY * m._22 + vecWorld->fX * m._12 + m._42;
    vecScreen->fZ = vecWorld->fZ * m._33 + vecWorld->fY * m._23 + vecWorld->fX * m._13 + m._43;
 
    // Get the correct screen coordinates
    float fRecip = 1.0f / vecScreen->fZ;
    vecScreen->fX *= fRecip * (*dwLenX);
    vecScreen->fY *= fRecip * (*dwLenY);
}
 

deathBit

Новичок
Автор темы
5
0
so I ported this function to a scripting language.
but its sometimes doesn't work correctly, for example if the world point is not visible on my screen the function returns strange values
they are bigger than my screen values or if I look in opposite direction of the point the function returns that the point is on my screen, but the point is obviously not visible...
 
Статус
В этой теме нельзя размещать новые ответы.