Когда 2 3d треугольника расположены друг над другом, они отображаются не так, как ожидалось.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Когда 2 3d треугольника расположены друг над другом, они отображаются не так, как ожидалось.

Сообщение Anonymous »

Недавно я пытался создать средство 3D-рендеринга с нуля, используя Java, в частности, используя обработку (PApplet). Однако у меня есть проблема: если два треугольника пересекаются, результат будет не таким, как я ожидал. Когда два треугольника перекрываются, на пересечении должна быть прямая линия. Однако получаю такой результат:Линии на пересечении не прямые
Когда я включаю очертания треугольника, становится немного понятнее, что происходит, как показано здесь:Когда пересекаются линии из других треугольников пересекающихся треугольников, образуется точка.
Этот эффект становится еще более выраженным, когда я приближаюсь к двум треугольникам, из-за того, что при отбраковке треугольников создается гораздо больше треугольников, чем было изначально: Крупный план эффекта, который также имеет гораздо больше треугольников, чем на первых изображениях
Это происходит только с треугольниками, близкими друг к другу, и не происходит, когда две фигуры находятся дальше или не внутри друг друга:Дальнейшие фигуры не вызывают таких же проблем< /p>
Мой полный код находится на этом GitHub, если вы хотите увидеть проблему самостоятельно: https://github.com/SACHSTech/processing ... oИзвиняюсь за плохое форматирование, так как этим летом я только начал программировать.
Что я пробовал:
Изменение интерполяции глубины с l1 * глубины[2]+l2 * глубины[1] + l3 * глубины[0] до 1/(l1/глубины[2]+l2/глубины[1]+l3/глубины[0]). Вместо этого он просто разбивал фигуры с отрицательным значением z.
Изменение всех целых чисел на двойные. Вместо этого он сломал его еще больше, и он стал пиксельным. В этой версии проблема также не устранена.
Многократная проверка каждого метода. Я не смог найти никаких очевидных проблем, и каждый раз, когда я пытался изменить значение, вся программа ломалась.
Последние несколько дней я пытался исправить это и проверил и попытался изменить почти каждый метод в коде. Пока ничего не помогло, поэтому я думаю, что это может быть проблема с каким-то уравнением, которое у меня есть.
Любая помощь будет очень признательна.

Подробнее здесь: https://stackoverflow.com/questions/785 ... s-expected
Ответить

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

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

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

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

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