ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   CalcScreenCoors (https://forum.antichat.xyz/showthread.php?t=1304498)

deathBit 03.04.2014 15:27

так что я перенесен эту функцию для скриптового языка

но это иногда не работает например, когда точка не видна 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);
}


Mf[R]O 03.04.2014 15:40

Please, write in English.

deathBit 03.04.2014 16:54

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...


Время: 02:54