Я хотел бы представить проекцию круга из трехмерного пространства в двумерное окно openCV, используя функцию рисования эллипса openCV. Это выглядит выполнимо (пока точная перспектива) не требуется, используя одну ось на 1,0 (большая ось) и играя с длиной вспомогательной оси и вращением большой оси. Я просмотрел много формул, но все они посвящены обратной задаче: из эллипса получить ориентацию круга. Я пытался инвертировать такие уравнения, но я получил решение системы уравнений, которая слишком тяжелая для моей цели (отображение многих эллипсов в реальном времени).
Я бы просто представил эффект вращения двух углов rotX, rotY (вокруг осей x и y) на круге 150 пикселей и отобразить его на экране. Я наивно пробовал это (на Python языке):
maxAxis = 150
minAxis = 150 * np.cos(rotX) * np.cos(rotY)
omg = 1.0 - np.arctan((np.sin(rotX) / np.cos(rotY) ))
cv.ellipse(image, (centerX, centerY), (int(minAxis), int(maxAxis)), omg, 0, 360,
(0,255,0), 3)
Но это не правильно, и нарисованный эллипс не является представительным для примененных углов поворота.
У кого-то есть идея простой способ сделать это без решения системы уравнений?