Example of light with different types.
MGL code:
light on:attachlight on call 'prepare2d' subplot 2 2 0:title 'Default':rotate 50 60:box:surf a line -1 -0.7 1.7 -1 -0.7 0.7 'BA' subplot 2 2 1:title 'Local':rotate 50 60 light 0 1 0 1 -2 -1 -1 line 1 0 1 -1 -1 0 'BAO':box:surf a subplot 2 2 2:title 'no diffuse':rotate 50 60 diffuse 0 line 1 0 1 -1 -1 0 'BAO':box:surf a subplot 2 2 3:title 'diffusive only':rotate 50 60 diffuse 0.5:light 0 1 0 1 -2 -1 -1 'w' 0 line 1 0 1 -1 -1 0 'BAO':box:surf a
C++ code:
void smgl_light(mglGraph *gr) // local light sources
{
mglData a; mgls_prepare2d(&a);
gr->Light(true); gr->AttachLight(true);
if(big==3)
{ gr->Rotate(50,60); gr->Box(); gr->Surf(a); return; }
gr->SubPlot(2,2,0); gr->Title("Default"); gr->Rotate(50,60);
gr->Line(mglPoint(-1,-0.7,1.7),mglPoint(-1,-0.7,0.7),"BA"); gr->Box(); gr->Surf(a);
gr->SubPlot(2,2,1); gr->Title("Local"); gr->Rotate(50,60);
gr->AddLight(0,mglPoint(1,0,1),mglPoint(-2,-1,-1));
gr->Line(mglPoint(1,0,1),mglPoint(-1,-1,0),"BAO"); gr->Box(); gr->Surf(a);
gr->SubPlot(2,2,2); gr->Title("no diffuse"); gr->Rotate(50,60);
gr->SetDiffuse(0);
gr->Line(mglPoint(1,0,1),mglPoint(-1,-1,0),"BAO"); gr->Box(); gr->Surf(a);
gr->SubPlot(2,2,3); gr->Title("diffusive only"); gr->Rotate(50,60);
gr->SetDiffuse(0.5);
gr->AddLight(0,mglPoint(1,0,1),mglPoint(-2,-1,-1),'w',0);
gr->Line(mglPoint(1,0,1),mglPoint(-1,-1,0),"BAO"); gr->Box(); gr->Surf(a);
}