深入浅出CChart 每日一课——第十四课 三维视图,数学老师之从平面到空间

三维视图的真实感较强,很多人比较喜欢。

笨笨在CChart中实现了好几种类型的三维视图。

其中一种是在普通折线图的基础上修修补补而成的假3D视图,这个3D不是真的3D,不过也很有用,笨笨用它来画瀑布图,效果非常好。

另外两种三维视图是真3D,采用了OpenGL。第一种真三维视图是3D折线图,第二种真三维视图是3D曲面图。

目前3D曲面图还有点缺点,主要是笨笨不太熟悉OpenGL。笨笨想用纹理贴图实现曲面的颜色变化,但还没有做好,这里就不献丑了。如果那位同学可以帮助笨笨实现用Z坐标设置曲面的颜色,笨笨感激不尽。

本节课笨笨向大家介绍3D折线图,仍然是一个实例。

请按照第一课的方法,建立一个VC6工程Lesson14。

由于要是用数学库,在Lesson14.cpp头部加上头文件引用。

 
#include <math.h>
 


下面填写WM_CREATE的响应例程如下。

 
case WM_CREATE:
	chartWnd.Attach(hWnd, kType3DLine);
	{
		int i;
		int nNum = 1080;
		double *pX, *pY, *pZ;
		pX = new double[nNum];
		pY = new double[nNum];
		pZ = new double[nNum];
			
		for(i=0; i<nNum; i++)
		{
			pX[i] = 2.0*3.1415926536*i/nNum*5;
			pY[i] = cos(pX[i]);
			pZ[i] = sin(pX[i]);
		}
		chartWnd.GetChart()->AddCurve(pX, pY, pZ, nNum);
				
		for(i=0; i<nNum; i++)
		{
			pX[i] = (i-nNum/2.0)/nNum*2.0;
			pY[i] = pX[i]*pX[i];
			pZ[i] = pY[i]*pX[i];
		}
		chartWnd.GetChart()->AddCurve(pX, pY, pZ, nNum);
			
		delete []pX;
		delete []pY;
		delete []pZ;
	}
	
	chartWnd.GetChart()->SetTitle(_TEXT("测试3D曲线"));
	break;
 

运行程序,效果如图。

由于是OpenGL实现的真3D图像,用鼠标拖动图像运动可以看到3D效果,下图是拖动过程中的某个状态。

可以看到,所有的图形和文字都是悬浮在空间中的,坐标平面不透明,呵呵。

本课简单介绍了CChart的三维视图功能,现在下课。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值