Я обнаружил, что если вы установите azimuth
на 133, elevation
на 324, zmod
на -0,9, оставьте xmod
на 0 и измените сетку на 7 & times; 7 вместо 10 раз; 10, то только один пункт «ведет себя плохо». Для этого одного неправильного пункта мы имеем:
i
= 48, j
= 3,
x0
= 7,0, y0
= 0,0, z0
= 6,1,
x1
= -0,31273127, y1
= 5,4544506, z1
= -7.5074077,
near
= 6,0 и nearToObj
= 1,5,
перед следующими двумя строками:
x1 = x1 * near / (z1 + near + nearToObj);
y1 = y1 * near / (z1 + near + nearToObj);
Критическим моментом здесь является то, что z1 + near + nearToObj
перешел ниже нуля. Когда он пересек нижний ноль, это привело к изменению знака значений x1
и y1
, рассчитанных двумя вышеупомянутыми линиями. Это изменение знака приводит к неправильному отображению сетки.
Я не эксперт в 3D-графике, но я полагаю, что этот результат говорит о том, что вы не можете нарисовать вопрос, потому что он скрылся за камерой. Боюсь, я не уверен, каким будет лучший способ решить эту проблему - для этого потребуется больше знаний о трехмерной графике, чем у меня.
Что касается моего другого ответа, он был совершенно неверным, поэтому я удалил его. Если бы я собирался заявить, что API Java 2D-графики - это любое делающее обертывание с использованием 16-разрядных целых чисел, я бы, по крайней мере, попытался проверить, что
g.drawLine(30, 30, 60, 60);
и
g.drawLine(30, 30, 60 + 65536, 60 + 65536);
дал тот же результат. Они не.