程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 深入淺出CChart 每日一課——第十四課 三維視圖,數學老師之從平面到空間

深入淺出CChart 每日一課——第十四課 三維視圖,數學老師之從平面到空間

編輯:關於C語言

三維視圖的真實感較強,很多人比較喜歡。

笨笨在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;
 

運行程序,效果如圖。

SouthEast

由於是OpenGL實現的真3D圖像,用鼠標拖動圖像運動可以看到3D效果,下圖是拖動過程中的某個狀態。

SouthEast

可以看到,所有的圖形和文字都是懸浮在空間中的,坐標平面不透明,呵呵。

本課簡單介紹了CChart的三維視圖功能,現在下課。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved