Я сделал автомобильный симулятор с помощью OpenGL. Для коробки столкновения автомобилей я использовал OBB. Проблема в том, что я хочу повернуть поле столкновений. Для этого я использую эту функцию:
Функция с минимальными и максимальными точками OBB вычисляет все углы и поворачивает их с помощью матрицы вращения (рассчитывается с учетом угла). Затем функция определяет точки newMin и newMax и возвращает их. Проблема, с которой я столкнулся, заключается в том, что функция не работает со значениями угла, отличными от 0° или 180°. newMin и newMax не совпадают с автомобилем.
Изначально, чтобы вычислить значения newMin и newMax, я просто умножал boxMin и boxMax на RotationMatrix, но этот метод не учитывался. учесть все углы. Чтобы решить эту проблему, я создал эту функцию:
Эта функция была лучше, потому что она работала для всех углов, кратных 90, но этого было недостаточно. Итак, я сделал первую функцию, но она хуже второй, потому что не работает для этих углов: 90° и 270°.
Я сделал автомобильный симулятор с помощью OpenGL. Для коробки столкновения автомобилей я использовал OBB. Проблема в том, что я хочу повернуть поле столкновений. Для этого я использую эту функцию: [code]std::vector rotateCollisionBox(float angle, glm::vec3 boxMin, glm::vec3 boxMax) { std::vector rotatedVertices; glm::mat4 rotationMatrix = glm::rotate(glm::mat4(1.0f), glm::radians(angle), glm::vec3(0.0, 1.0, 0.0));
return {newMin, newMax}; } [/code] Функция с минимальными и максимальными точками OBB вычисляет все углы и поворачивает их с помощью матрицы вращения (рассчитывается с учетом угла). Затем функция определяет точки newMin и newMax и возвращает их. Проблема, с которой я столкнулся, заключается в том, что функция не работает со значениями угла, отличными от 0° или 180°. newMin и newMax не совпадают с автомобилем. Изначально, чтобы вычислить значения newMin и newMax, я просто умножал boxMin и boxMax на RotationMatrix, но этот метод не учитывался. учесть все углы. Чтобы решить эту проблему, я создал эту функцию: [code]std::vector rotateCollisionBox(float angle, glm::vec3 boxMin, glm::vec3 boxMax) { std::vector rotatedVertices; glm::mat4 rotationMatrix = glm::rotate(glm::mat4(1.0f), glm::radians(angle), glm::vec3(0.0, 1.0, 0.0));
return {newMin, newMax}; } [/code] Эта функция была лучше, потому что она работала для всех углов, кратных 90, но этого было недостаточно. Итак, я сделал первую функцию, но она хуже второй, потому что не работает для этих углов: 90° и 270°.
Я создал с помощью OpenGL автомобильный симулятор. Для коробки столкновений автомобилей я использовал OBB. Проблема в том, что я хочу повернуть коробку столкновений. для этого я использую эту функцию:
std::vector rotateCollisionBox(float angle,...
Я создал с помощью OpenGL автомобильный симулятор. Для коробки столкновения автомобилей я использовал OBB. Проблема в том, что я хочу повернуть поле столкновений. для этого я использую эту функцию:
std::vector rotateCollisionBox(float angle,...
Я создал с помощью OpenGL автомобильный симулятор. Для коробки столкновения автомобилей я использовал OBB. Проблема в том, что я хочу повернуть поле столкновений. для этого я использую эту функцию:
std::vector rotateCollisionBox(float angle,...
Я сделал автомобильный симулятор с помощью OpenGL. Для коробки столкновения автомобилей я использовал OBB. Проблема в том, что я хочу повернуть поле столкновений. Для этого я использую эту функцию:
std::vector rotateCollisionBox(float angle,...
Я использую YOLOv8 OBB for object detection with OpenCV in Python. The model inference is working correctly, and I can detect objects in the input images. However, I need to crop and save images of the detected objects to an output folder.
I tried...