Освещение по Ламберту трехмерного графика

В примере строится 3D график функции, проецированием точки на экран по формулам центральной проекции, удаляются невидимые грани по алгоритму плавающего горизонта, а также происходит освещение источником света. Используется модель освещения Ламберта.
При нажатию на кнопку "Rotate" график вращается по оси X.