Другое С/С++ Вопрос - Ответ

rraggerr

проверенный какой-то
1,626
847
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)


Уп
 

SiTrak

Известный
193
251
Как можно создать такую вкладку?
 

Вложения

  • 1111.png
    1111.png
    1.8 KB · Просмотры: 238

Rjx13

Известный
Проверенный
224
160
Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)


Уп
Это конечно все не точно, но может тебе даст направление

Код:
// get player matrix
                CMatrix matPed;
                pPedSelf->GetMatrix(&matPed);

                // tilt player upright
                CVector rotationAxis = g_vecUpNormal;
                rotationAxis.CrossProduct( &matPed.vUp );
                float theta = ( matPed.vUp.DotProduct( &g_vecUpNormal ) );
                if ( !near_zero(theta) )
                {
                    matPed = matPed.Rotate( &rotationAxis, cos(theta) );
                    // normalize everything
                    matPed.vFront.Normalize();
                    matPed.vRight.Normalize();
                    matPed.vUp.Normalize();
                    // zero near zero
                    matPed.vFront.ZeroNearZero();
                    matPed.vRight.ZeroNearZero();
                    matPed.vUp.ZeroNearZero();
                    // set player matrix
                    pPedSelf->SetMatrix(&matPed);

Код:
CMatrix Rotate ( const CVector * param, float theta )
    {
        // Rotate the rotation matrix
        double sin_t = sinf( theta ), cos_t = cosf( theta );
        CMatrix mRotateMult;
        // rotate X
        mRotateMult.vRight.fX = (double) cos_t + ( 1.0f - cos_t ) * param->fX * param->fX;
        mRotateMult.vRight.fY = (double) ( 1.0f - cos_t ) * param->fX * param->fY - sin_t * param->fZ;
        mRotateMult.vRight.fZ = (double) ( 1.0f - cos_t ) * param->fX * param->fZ + sin_t * param->fY;
        // rotate Y
        mRotateMult.vFront.fX = (double) ( 1.0f - cos_t ) * param->fY * param->fX + sin_t * param->fZ;
        mRotateMult.vFront.fY = (double) cos_t + ( 1.0f - cos_t ) * param->fY * param->fY;
        mRotateMult.vFront.fZ = (double) ( 1.0f - cos_t ) * param->fY * param->fZ - sin_t * param->fX;
        // rotate Z
        mRotateMult.vUp.fX = (double) ( 1.0f - cos_t ) * param->fZ * param->fX - sin_t * param->fY;
        mRotateMult.vUp.fY = (double) ( 1.0f - cos_t ) * param->fZ * param->fY + sin_t * param->fX;
        mRotateMult.vUp.fZ = (double) cos_t + ( 1.0f - cos_t ) * param->fZ * param->fZ;
        // multiply matrix
        mRotateMult = mRotateMult * (*this);
        // set vectors
        mRotateMult.vPos = vPos;
        // return
        return mRotateMult;
    }

Попробуй еще сам поковыряться в сурсах собейта. По сути можно найти функцию которая срабатывает на Backspace. Она разворачивает кар на 180 градусов. Видимо тебя это интересует
 

rraggerr

проверенный какой-то
1,626
847
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Это конечно все не точно, но может тебе даст направление

Код:
// get player matrix
                CMatrix matPed;
                pPedSelf->GetMatrix(&matPed);

                // tilt player upright
                CVector rotationAxis = g_vecUpNormal;
                rotationAxis.CrossProduct( &matPed.vUp );
                float theta = ( matPed.vUp.DotProduct( &g_vecUpNormal ) );
                if ( !near_zero(theta) )
                {
                    matPed = matPed.Rotate( &rotationAxis, cos(theta) );
                    // normalize everything
                    matPed.vFront.Normalize();
                    matPed.vRight.Normalize();
                    matPed.vUp.Normalize();
                    // zero near zero
                    matPed.vFront.ZeroNearZero();
                    matPed.vRight.ZeroNearZero();
                    matPed.vUp.ZeroNearZero();
                    // set player matrix
                    pPedSelf->SetMatrix(&matPed);

Код:
CMatrix Rotate ( const CVector * param, float theta )
    {
        // Rotate the rotation matrix
        double sin_t = sinf( theta ), cos_t = cosf( theta );
        CMatrix mRotateMult;
        // rotate X
        mRotateMult.vRight.fX = (double) cos_t + ( 1.0f - cos_t ) * param->fX * param->fX;
        mRotateMult.vRight.fY = (double) ( 1.0f - cos_t ) * param->fX * param->fY - sin_t * param->fZ;
        mRotateMult.vRight.fZ = (double) ( 1.0f - cos_t ) * param->fX * param->fZ + sin_t * param->fY;
        // rotate Y
        mRotateMult.vFront.fX = (double) ( 1.0f - cos_t ) * param->fY * param->fX + sin_t * param->fZ;
        mRotateMult.vFront.fY = (double) cos_t + ( 1.0f - cos_t ) * param->fY * param->fY;
        mRotateMult.vFront.fZ = (double) ( 1.0f - cos_t ) * param->fY * param->fZ - sin_t * param->fX;
        // rotate Z
        mRotateMult.vUp.fX = (double) ( 1.0f - cos_t ) * param->fZ * param->fX - sin_t * param->fY;
        mRotateMult.vUp.fY = (double) ( 1.0f - cos_t ) * param->fZ * param->fY + sin_t * param->fX;
        mRotateMult.vUp.fZ = (double) cos_t + ( 1.0f - cos_t ) * param->fZ * param->fZ;
        // multiply matrix
        mRotateMult = mRotateMult * (*this);
        // set vectors
        mRotateMult.vPos = vPos;
        // return
        return mRotateMult;
    }

Попробуй еще сам поковыряться в сурсах собейта. По сути можно найти функцию которая срабатывает на Backspace. Она разворачивает кар на 180 градусов. Видимо тебя это интересует
Примерно да
 

iAmerican

Известный
Друг
615
257
ой, не правильно сформулировал вопрос, как сделать так, чтоб чекбоксы были в 2 столбика?
ImGui::Columns(2,"name(любое)",false)
чекбокс
чекбокс
ImGui::NextColumns()
Чекбокс
чекбокс
ImGui::Columns(1) // закрывающий колумнс
 
  • Нравится
Реакции: SiTrak

AnWu

Guardian of Order
Всефорумный модератор
4,690
5,193
Как правильно числа записывать в const char *? Не совсем понимаю, а загуглить правильно не выходит
 

SiTrak

Известный
193
251
Как скрыть, или хотя бы запретить передвижение этой палки)
 

Вложения

  • 11.png
    11.png
    23.9 KB · Просмотры: 254