Проблема в коде модели освещения. Он вычисляет нормаль поверхности для каждой четырехугольной грани поверхности pm3d, используя перекрестное произведение (v1-v0) x (v2-v0). В этом случае четырехугольники, которые касаются «полюсов» сферы, становятся вырожденными, потому что две из четырех вершин l ie точно на полюсе, оставляя только треугольник. В зависимости от того, какая из двух вершин совпадает, нормаль становится неопределенной, и расчет освещения прекращается, возвращая 0 = черный. Так что это исправимая ошибка, поскольку другой выбор вершин по-прежнему позволяет вычислить нормаль. не совсем доходит до полюсов:
epsilon=0.0001
set urange [epsilon - pi/2 : pi/2 - epsilon]
Как бы то ни было, другой обходной путь - set pm3d interpolation 3,3
. Я не уверен, почему это работает, но это может быть полезно, если та же проблема возникает при построении набора данных, который не создается на месте.