Проблемы 3D рендеринга с участием RaycastC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблемы 3D рендеринга с участием Raycast

Сообщение Anonymous »

В настоящее время я работаю над Raycaster, который был изменен с 2D (который работал отлично) до 3D, чтобы я мог достичь переменных высот. Я довольно новичок в программировании (всего с половиной месяца в C ++ и 3 месяца в C), так что я, вероятно, мне не хватает. Нынешняя проблема, которую я пытаюсь решить более 4 дней, существует, когда -то поднимается вверх или вниз. Вращение левого и правого позы, однако, не проблема, так что вот что я в настоящее время испытываю: < /p>

vk_up и vk_dow начинает искажать < /li>
< /ul>

Это заставляет меня сделать вывод, что что -то не так с тем, как делается вращение, но я не смог найти решение. неправильно]). Вот код для вращения всех направлений: < /p>

Код: Выделить всё

//rotation to right
else if (wParam == VK_RIGHT) {

//rotate camera dir
double oldDirX = dirX;

dirX = dirX * cos(-HrotSpeed) - (dirY * sin(-HrotSpeed));
dirY = oldDirX * sin(-HrotSpeed) + (dirY * cos(-HrotSpeed));

//rotate camera plane
double oldPlaneX = planeX;

planeX = planeX * cos(-HrotSpeed) - (planeY * sin(-HrotSpeed));
planeY = oldPlaneX * sin(-HrotSpeed) + (planeY * cos(-HrotSpeed));

}
//rotation to left
else if (wParam == VK_LEFT) {

//rotate camera dir
double oldDirX = dirX;

dirX = dirX * cos(HrotSpeed) - (dirY * sin(HrotSpeed));
dirY = oldDirX * sin(HrotSpeed) + (dirY * cos(HrotSpeed));

//rotate camera plane
double oldPlaneX = planeX;

planeX = planeX * cos(HrotSpeed) - (planeY * sin(HrotSpeed));
planeY = oldPlaneX * sin(HrotSpeed) + (planeY * cos(HrotSpeed));

}
else if (wParam == VK_DOWN) {

if (currPitch - VrotSpeed >= MIN_PITCH) {

double oldDirY = dirY;

// rotate camera dir
dirY = dirY * cos(-VrotSpeed) - dirZ * sin(-VrotSpeed);
dirZ = oldDirY * sin(-VrotSpeed) + dirZ * cos(-VrotSpeed);

double oldPlaneY = planeY;

// rotate plane dir
planeY = planeY * cos(-VrotSpeed) - planeZ * sin(-VrotSpeed);
planeZ = oldPlaneY * sin(-VrotSpeed) + planeZ * cos(-VrotSpeed);

currPitch -= VrotSpeed;

}
}
else if (wParam == VK_UP) {

if (currPitch + VrotSpeed 

Подробнее здесь: [url]https://stackoverflow.com/questions/79545192/3d-rendering-issues-involving-raycast[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»