Два окна просмотра с использованием Java2D - PullRequest
0 голосов
/ 10 ноября 2009

Это своего рода домашнее задание, однако никаких ожиданий в отношении кода или чего-либо другого, просто идея или намек на следующую проблему.

У меня есть набор кубов в трехмерных мировых координатах, и я должен отобразить их, используя две проекции в двух отдельных областях, параллельной и перспективной. Параллель прошла нормально, проблем нет, однако отображение той же сцены с использованием перспективной проекции становится для меня неприятностью.

Мир с экранными координатами казался хорошей идеей, но я не знаю, к каким координатам их применять, исходные реальные координаты, новые координаты.

Спасибо за ваше время.

PS: нам разрешен только Java2D Api.

1 Ответ

0 голосов
/ 10 ноября 2009

Чтобы выполнить перспективную проекцию, вам понадобятся две дополнительные вещи: точка перспективы (где находится «глаз») и плоскость проекции. При параллельной проекции точка / глаз и плоскость перспективы могут находиться на любом произвольном расстоянии от объектов (например, кубов). Но это немного сложнее с перспективной проекцией.

Как только вы установите свой глаз и плоскость проецирования, вам нужно будет перебирать кубы. В идеале вы должны перебирать их от самого дальнего к глазу до самого близкого - таким образом, более близкие кубы будут перезаписывать более дальние.

Для каждого куба определите расстояние от глаза для каждой точки. Затем для каждой грани (опять-таки в порядке уменьшения расстояния) рассчитайте проекционные точки для каждой вершины. Вы можете пропустить эти грани с закрытыми точками (самая дальняя вершина для каждого куба).

Чтобы рассчитать спроецированную точку для конкретной вершины, вам нужно найти точку на плоскости проекции. Эта точка будет там, где линия от глаза до вершины пересекает плоскость проекции. Это потребует некоторой математики, но не должно быть слишком сложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...