Python - проектирование круга с помощью camera.Camera class

В настоящее время я проецирую круг с камерой. Класс камеры и разные углы обзора.

Характеристики:

  1. Центр круга -> [0, 0, 1]
  2. Центр камеры -> [0, 0, 0] (глядя вверх по оси Z)

Я использовал класс camera.Camera, и все вроде нормально, но когда я изменяю угол обзора по оси Y на более высокий, чем 60, точки внезапно образуют крест. (https://i.stack.imgur.com/GBvDX.png)

На мой взгляд, это проблема кода (он должен образовывать эллипс). Или это какое-то проективное явление?

Вот мой код:

cam = Camera()
cam.set_K_elements(0, 0, 1, a=1)
R = np.identity(3)
cam.set_R(R)
cam.set_t(np.array([[0], [0], [0]]))

rad_y = 1,0472
cam.set_R_euler_angles((0, rad_y, 0))
circle = get_circle_points(1000, 1)
cam.plot_world_points(circle, plot_style = "ro", solve_visibility=False)

Я новичок в проективной геометрии и не знаю, ожидается ли такое поведение или моя вина.

Я очень ценю любую помощь, которую вы можете оказать.

Картина не похожа на какую-либо проекцию, которую мог бы дать круг. Может что-то не так в get_circle_points ()?

hasdrubal 30.03.2021 10:14

Извините, я не могу публиковать другие фотографии (я новичок). Но когда я рисую круг с углом = 0 -> я получаю хороший круг с радиусом 1 ... если я увеличиваю угол, я получаю эллипс (это то, что, как я думал, должно произойти). Но с углом> 50 я получаю такой результат и не знаю почему.

TecK97 30.03.2021 10:17

Но спасибо за ответ, попробую оценить свою функцию.

TecK97 30.03.2021 10:19

Не могли бы вы попробовать с rad_y = 1.0472, версия с запятыми вообще не должна запускаться, поскольку она дает rad_y целочисленный список в качестве значения. Не могли бы вы дать импорт библиотеки для не так уж и близко инициированных? Не является ли установка R на идентичность избыточной, как вы установили чуть позже матрицу с использованием углов Эйлера? Было бы лучше упорядочить последовательность инициализации более интуитивно, то есть сначала установить положение камеры, затем остальную ориентацию, а затем изменить это, посмотрев на целевую позицию?

Lutz Lehmann 31.03.2021 16:36

Привет, спасибо за ответ. Это всего лишь небольшой фрагмент кода, и я вычисляю радианты в градусах (радианах (угол)). Это просто опечатка. Да, наверное, вы правы, изменив последовательность. Проблему пока не нашел. Думаю, тут есть какое-то отношение к повороту камеры. Если я установлю для параметра resolve_visibility значение True, он ничего не покажет, и я не знаю почему.

TecK97 03.04.2021 11:15

Кажется, что точки образуют эллипс с 40 градусами, но с более чем 50 градусами точки появляются на другой стороне графика ... действительно странное Обновление: если вместо этого я изменю положение камеры по оси z на 0,5 из 0 работает отлично ...

TecK97 03.04.2021 11:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
19
0

Другие вопросы по теме