5.2.2 Освещение

Эти функции настраивают освещение графика. Главная функция light включает/выключает освещение графиков построенных после ее вызова (в OpenGL работает сразу для всего рисунка). MathGL поддерживает до 10 независимых источников света. Но в режиме OpenGL можно использовать только первые 8 из них. Положение, цвет, яркость каждого источника света можно задавать по отдельности. По умолчанию включен только первый (с порядковым номером 0) источник света белого цвета, расположенный сверху. См. раздел Lighting sample, для примеров кода и графика.

Команда MGL: light [val=on]
Метод класса mglGraph: bool Light (bool enable)
Функция С: void mgl_set_light (HMGL gr, int enable)

Включает/выключает освещение графика и возвращает предыдущее состояние. По умолчанию освещение выключено.

Команда MGL: light num val
Метод класса mglGraph: void Light (int n, bool enable)
Функция С: void mgl_set_light_n (HMGL gr, int n, int enable)

Включает/выключает n-ый источник света.

Команда MGL: light num xdir ydir zdir ['col'='w' br=0.5 ap=0]
Команда MGL: light num xdir ydir zdir xpos ypos zpos ['col'='w' br=0.5]
Метод класса mglGraph: void AddLight (int n, mglPoint d, char c='w', mreal bright=0.5, mreal ap=0)
Метод класса mglGraph: void AddLight (int n, mglPoint r, mglPoint d, char c='w', mreal bright=0.5, mreal ap=0)
Функция С: void mgl_add_light (HMGL gr, int n, mreal dx, mreal dy, mreal dz)
Функция С: void mgl_add_light_ext (HMGL gr, int n, mreal dx, mreal dy, mreal dz, char c, mreal bright, mreal ap)
Функция С: void mgl_add_light_loc (HMGL gr, int n, mreal rx, mreal ry, mreal rz, mreal dx, mreal dy, mreal dz, char c, mreal bright, mreal ap)

Добавляет источник света с номером n в положение p с цветом c и яркостью bright, которая должна быть в диапазоне [0,1]. Если указано положение источника r и оно не NAN, то источник считается локальным, иначе источник полагается бесконечно удалённым (для более быстрого рисования).

Команда MGL: diffuse val
Метод класса mglGraph: void SetDifLight (mreal bright)
Функция С: void mgl_set_difbr (HMGL gr, mreal bright)

Задает яркость диффузного освещения (только для локальных источников света).

Команда MGL: ambient val
Метод класса mglGraph: void SetAmbient (mreal bright=0.5)
Функция С: void mgl_set_ambbr (HMGL gr, mreal bright)

Задает яркость рассеянного освещения. Значение должно быть в диапазоне [0,1].

Команда MGL: attachlight val
Метод класса mglGraph: void AttachLight (bool val)
Функция С: void mgl_set_attach_light (HMGL gr, int val)

Задает привязку настроек освещения к inplot/subplot. Отмечу, что OpenGL и некоторые выходные форматы не поддерживают эту возможность.