Time of Update: 2018-12-06
NAN是指not a number。浮點數在進行除零操作之後,就會變成NAN(INF)。可以使用下列函數來判斷該值是否為NAN(INF)。庫函數:int _isnan(double); int _finite(double);//vc下使用該函數//若傳入的double值無效,函數返回0. 需要包含庫檔案<float.h>也可寫自訂函數來進行判斷(vc下不行)1 bool is_nan(double dVal)2 {3 if (dVal==dVal)4
Time of Update: 2018-12-06
在glBegin和glEnd之間執行有效函數glVertex*() //設定頂點座標glColor*() //設定使用中色彩glIndex*() //設定使用中色彩索引glNormal*() //設定法線向量座標glTexCoord*() //設定紋理座標glMultiTexCoord*ARB() //為多重紋理映射設定紋理座標glEdgeFlag*() //控制邊的繪製glMaterial*() //設定材質屬性glArrayElement(
Time of Update: 2018-12-06
# 重要說明(1) 使用GCC進行編譯時間,需在編譯選項中加入"-g"參數 cc -g main.c -o main g++ -g main.cpp -o main(2) 使用gdb調試前,要先進入待調試模組所在目錄(使得能正確關聯到原始碼檔案)(3) 進入gdb調試狀態,直接斷行符號表示"重複上一次命令"(4) 按上下方向鍵可以瀏覽和選擇以前輸入過的命令(5)
Time of Update: 2018-12-06
1. 前序/中序/後序遍曆(遞迴實現)// 前序走訪void BT_PreOrder(BiTreePtr pNode){ if (!pNode) return; visit(pNode); BT_PreOrder(pNode->left); BT_PreOrder(pNode->right); }// 中序遍曆void BT_PreOrder(BiTreePtr pNode){ if (!pNode) return; BT_
Time of Update: 2018-12-06
對於MFC的單文檔應用程式,在其他的類中我們經常要擷取View類的指標,以此來訪問View下的public成員。一般的方法:1 CMainFrame* pMainFrm = (CMainFrame*)AfxGetMainWnd();2 CMapGISView* pMapView = (CMapGISView*)pMainFrm->GetActiveView();有時用這種方法會存在問題,程式會宣告失敗。我們來看看GetActiveView()的實現代碼:1 CView*
Time of Update: 2018-12-06
具體做法是:開啟一個obj檔案,尋找含有“v x y z"的字串,然後對z的字串進行符號處理:若為"-",直接將該符號刪除;不為"-"且z值不為0,則在z的字串前加上"-"。樣本(原始檔案box.obj)## object Box01#v -39.306316 -32.828358 -29.183971v -39.306316 33.259296 -29.183971v 39.726025 33.259296 -29.183971v 39.726025 -32.828358 -29.18
Time of Update: 2018-12-06
(1)全局座標系 OpenGL為右手座標系 D3D為左手座標系(2)裁剪空間 OpenGL中z的範圍:[-1.0, 1.0] D3D為:[0.0, 1.0](3)shader OpenGL的shader語言為GLSL D3D為HLSL CG是nVidia公司的shader語言 可以同時在OpenGL和D3D上跑(4)頂點顏色順序 OpenGL為:RGBA格式 D3D為:BGRA格式(5)視口座標系
Time of Update: 2018-12-06
向量n繞axe軸向旋轉degrees度 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 void rotate( double degrees, const vector3df& axe, vector3df& n) 2 { 3 vector3df dir(axe); 4 dir.normalize(); 5
Time of Update: 2018-12-06
QT-GUI程式顯示命令列調試視窗,Qt/VS2008具體配置細節方法如下:1. Qt Creator - pro工程檔案用文本工具開啟pro檔案,在其中加入:CONFIG += console1 HEADERS = mainwindow.h 2 SOURCES = mainwindow.cpp 3 RESOURCES = diagramscene.qrc4 CONFIG += console2. vs2008
Time of Update: 2018-12-06
0 原始貼圖1 Nearest濾波紋理2 線性濾波紋理3 MipMapped紋理int LoadGLTextures() // 載入位元影像(調用上面的代碼)並轉換成紋理{int Status=FALSE;// 狀態指示器AUX_RGBImageRec *TextureImage[1];// 建立紋理的儲存空間memset(TextureImage,0,sizeof(void *)*1);// 將指標設為 NULL// 載入位元影像,檢查有錯,或位元影像不存在的話退出if
Time of Update: 2018-12-06
0. 定義一個常駐記憶體的CFont對象1. 建立一個雅黑字型,並設定字型大小2. 將該字型對象指標賦值給Status Bar對象 MFC單文檔樣本: 1 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 2 { 3 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 4 return -1; 5 6 if
Time of Update: 2018-12-06
【GDI+與GDI】 -- 都是硬體加速的1. GDI+是GDI的下一個版本,它進行了很好的改進,並且易用性更好。GDI的一個好處就是你不必知道任何關於資料怎樣在裝置上渲染的細節,GDI+更好的實現了這個優點,也就是說,GDI是一個中低層API,你還可能要知道裝置,而GDI+是一個高層的API,你不必知道裝置。2. GDI是有狀態的,而GDI+是無狀態的。3. GDI繪圖要使用裝置環境(DC)和控制代碼(Handle);而GDI+全部交由Graphics類管理。4.
Time of Update: 2018-12-06
PictureConverter基於cximage實現,為命令列圖片批量轉換工具。支援如下格式圖片的互轉:bmp gif jpg(jpeg) png ico tif(tiff) tga wbmp wmf jp2(j2k)jpc(j2c) pgx pnm(pgm,ppm) ras mng ska raw++++++++++++++++++++++++++可以從這裡下載該工具:PictureConverter輸入PictureConverter
Time of Update: 2018-12-06
OpenGL紋理貼圖渲染主要包含三步:(1)在繪製前,載入OpenGL紋理資源 a. 讀取bmp寬高值和像素矩陣 b. 調用glGenTextures擷取紋理對象ID c. 調用glBindTextures綁定紋理對象ID,使得後續OpenGL指令使用該ID的紋理 d. 調用glTexImage2D產生紋理 e. 設定一些OpenGL處理紋理的參數BOOL LoadGLTextures()// 載入位元影像並轉換成紋理{int Status=FALSE; //
Time of Update: 2018-12-06
fscanf為讀取文字檔的一個c API,其特點是可格式化讀取檔案內容。1 FILE* pf = fopen("c:\\hello.txt", "r");2 if (NULL==pf)3 return;4 5 char cstr[256];6 fscanf(pf, "%s", cstr);7 fclose(pf);fscanf使用空格,Tab,斷行符號來分割不同單詞,使用起來比較方便。下面對fscanf進行了簡單的封裝,使其能搜尋目標字元,讀取字串,整型和雙精確度浮點數。 1
Time of Update: 2018-12-06
今天在移植一個開原始碼到windows的VC6工程,編譯時間出現了這些奇怪的LINK錯誤。++++++++++++++++++++++++msvcrt.lib(MSVCRT.dll) : error LNK2005: _toupper already defined in LIBCD.lib(toupper.obj)msvcrt.lib(MSVCRT.dll) : error LNK2005: _tolower already defined in
Time of Update: 2018-12-06
+++++++++++++++++++ 全域系統 +++++++++++++++++++++Alt + F1:相當於windows的“win”按鍵,在GNOME中開啟"應用程式"(Applications)菜單Alt + F2:相當於windows下的win + R,調出“運行”對話方塊 {gnome-terminal 啟動終端}Ctrl + Alt + L:相當於windows下的win + L,進行鎖屏Ctrl + Alt + D:相當於windows下的win +
Time of Update: 2018-12-06
** 應用程式層 ** 資料 DataBitTorrent:一個流行的P2P協議。DNS:Domain Name System,一項Internet核心服務,實現網域名稱與IP地址的映射。DHCP:Dynamic Host Configuration Protocol,區域網路網路通訊協定,主要的兩個用途為: (1) 給內部網路或網路服務供應商自動分配IP地址給使用者 (2) 給內部網路系統管理員作為對所有電腦作中央管理的手段FTP:File
Time of Update: 2018-12-06
下面講解以逆時針序列三角形ABC為例,進行推導和講解:A(x1,y1) B(x2,y2) C(x3,y3)S為三角形ABC的面積,Sm1為直角梯形AA'B'B的面積,Sm2為直角梯形BB'C'C的面積,Sn1為直角梯形AA'C'C的面積容易得知:S =-(Sm1+Sm2) + Sn1-Sm1 = (x1-x2)(y1+y2)/2 = (x1*y1+x1*y2-x2*y1-x2*y2)/2-Sm2 = (x2-x3)(y2+y3)/2 =
Time of Update: 2018-12-06
數組對應著一塊記憶體地區,而指標是指向一塊記憶體地區。數組其地址和容量在生命期裡不會改變,只有內容可以改變;而指標卻不同,它指向的記憶體地區的大小可以隨時改變,而且當指標指向常量字串時,它的內容是不可以被修改的,否則在運行時會報錯。聲明一個數組時,編譯器會根據數組中元素的個數為其分配空間,數組名存放在符號表中,該值為數組的起始地址,為常量,不能被修改。而指標指向一個地址,而且其本身也需要空間來儲存。如所示:註:a=0xD2D61000