19,468
社区成员
发帖
与我相关
我的任务
分享
gleDrawScene[HFor("Scene")],stop(); //设置场景绘制函数后退出
//让图形随鼠标移动。factor为比例因子,factor越大则移动幅度越大。
fcglFollowMouse(factor:x,y,xx,yy,xxx,yyy,static,fcglFollowMouse,xMouse,yMouse)=
{
if[gleGetMouseMsg(WM_LBUTTONDOWN,&x,&y),fcglFollowMouse=1,xMouse=x,yMouse=y],
gleGetWindowSize[&xxx,&yyy],
if[fcglFollowMouse,gleGetMouseMsg(WM_MOUSEMOVE,&xx,&yy),gleAngle[1,gleAngle(1)+(yy-yMouse)/yyy*factor],gleAngle[2,gleAngle(2)+(xx-xMouse)/xxx*factor]],
if[gleGetMouseMsg(WM_LBUTTONUP,&xx,&yy),fcglFollowMouse=0],
glRotated[gleAngle(1),1,0,0], //使图象沿X轴旋转
glRotated[gleAngle(2),0,1,0], //使图象沿Y轴旋转
glRotated[gleAngle(3),0,0,1] //使图象沿Z轴旋转
};
f(x,y)=sin[sqrt(x*x+y*y)];
initScene()= //定义初始化函数
{
gleAngle(90,180,90) //设置重置视图初始位置
};
Scene()= //场景绘制函数
{
if[gleIsInitScene(),initScene()], //需要初始化场景时,就执行初始化函数
glClear[],
glColor3d[1,0,0], //设置颜色
gleAxesAngle[], //显示坐标和旋转角度
glLoadIdentity[],
glTranslated[0,0,-20],
glColor3d[0,1,0], //设置颜色
fcglFollowMouse[2], //通过鼠标拖动变换任意角度来观察物体
fgPlot3d[HFor("f"),-5,5,-5,5,FG_NOMESH] //绘制二元函数图形
};
gleDrawScene[HFor("Scene")],stop(); //设置场景绘制函数后退出
//让图形随鼠标移动。factor为比例因子,factor越大则移动幅度越大。
fcglFollowMouse(factor:x,y,xx,yy,xxx,yyy,static,fcglFollowMouse,xMouse,yMouse)=
{
if[gleGetMouseMsg(WM_LBUTTONDOWN,&x,&y),fcglFollowMouse=1,xMouse=x,yMouse=y],
gleGetWindowSize[&xxx,&yyy],
if[fcglFollowMouse,gleGetMouseMsg(WM_MOUSEMOVE,&xx,&yy),gleAngle[1,gleAngle(1)+(yy-yMouse)/yyy*factor],gleAngle[2,gleAngle(2)+(xx-xMouse)/xxx*factor]],
if[gleGetMouseMsg(WM_LBUTTONUP,&xx,&yy),fcglFollowMouse=0],
glRotated[gleAngle(1),1,0,0], //使图象沿X轴旋转
glRotated[gleAngle(2),0,1,0], //使图象沿Y轴旋转
glRotated[gleAngle(3),0,0,1] //使图象沿Z轴旋转
};
f(x,y)=sin[sqrt(x*x+y*y)];
initScene()= //定义初始化函数
{
gleAngle(90,180,90) //设置重置视图初始位置
};
Scene()= //场景绘制函数
{
if[gleIsInitScene(),initScene()], //需要初始化场景时,就执行初始化函数
glClear[],
glColor3d[1,0,0], //设置颜色
gleAxesAngle[], //显示坐标和旋转角度
glLoadIdentity[],
glTranslated[0,0,-20],
glColor3d[0,1,0], //设置颜色
glRotated[gleAngle(1),1,0,0], //使图象沿X轴旋转
glRotated[gleAngle(2),0,1,0], //使图象沿Y轴旋转
glRotated[gleAngle(3),0,0,1], //使图象沿Z轴旋转
fgPlot3d[HFor("f"),-5,5,-5,5,FG_NOMESH],
fcglFollowMouse[2] //通过鼠标拖动变换任意角度来观察物体
};
//让图形随鼠标移动。factor为比例因子,factor越大则移动幅度越大。factor=0进行初始化。
fcglFollowMouse(factor:x,y,xx,yy,xxx,yyy:fcglFollowMouse,xMouse,yMouse)=
{
if[!factor,fcglFollowMouse=0,return(0)],
if[gleGetMouseMsg(WM_LBUTTONDOWN,&x,&y),fcglFollowMouse=1,xMouse=x,yMouse=y],
gleGetWindowSize[&xxx,&yyy],
if[fcglFollowMouse,gleGetMouseMsg(WM_MOUSEMOVE,&xx,&yy),gleAngle[1,gleAngle(1)+(yy-yMouse)/yyy*factor],gleAngle[2,gleAngle(2)+(xx-xMouse)/xxx*factor]],
if[gleGetMouseMsg(WM_LBUTTONUP,&xx,&yy),fcglFollowMouse=0],
glRotated[gleAngle(1),1,0,0], //使图象沿X轴旋转
glRotated[gleAngle(2),0,1,0], //使图象沿Y轴旋转
glRotated[gleAngle(3),0,0,1] //使图象沿Z轴旋转
};