資源簡介
文檔包括bezier曲線曲面生成算法 的原理公式說明 以及編程實現。
文檔的項目“Bezier”是使用 Microsoft VC++ 6.0 實現的,當然只要是配置好
OpenGl環境的C++平臺都可以使用,把關鍵cpp代碼復制即可。

代碼片段和文件信息
//?Berzier3D.cpp
//?本程序實現了?bezier曲線?以及?曲面的生成算法(拖動鼠標可以改變視角)
/////////////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“Berzier3D.h“
struct?Point{
double?x;
double?y;
double?z;
};
//用于繪制在?XY平面的?Bezier?曲線??的10個控制點
Point?pp[10]?=?{?
{?28?5?0}
{?30?20?0}
{?35?25?0}
{?40?5?0}
{?41?5?0}
{?43?18?0}
{?44?25?0}
{?45?15?0}
{?46?7?0}
{?45?2?0}
};
//用于繪制?Bezier?曲面??的100?個控制點
Point?PMaxtrix[10][10]={??//第一個維度(列)的方向為u方向,第二個維度(行)的方向為w?方向
{{30?3?30}{27?3?30}{24?3?30}{21?3?30}{18?3?30}{15?3?30}{12?3?30}{9?3?30}{6?3?30}{3?3?30}}
{{30?6?30}{27?6?40}{24?6?40}{21?6?30}{18?6?30}{15?6?30}{12?6?30}{9?6?40}{6?6?40}{3?6?30}}//第2389高度Z不同
{{30?9?30}{27?9?40}{24?9?40}{21?9?30}{18?9?30}{15?9?30}{12?9?30}{9?9?40}{6?9?40}{3?9?30}}//第2389高度Z不同
{{30?1230}{27?1230}{24?1230}{21?1230}{18?1230}{15?1230}{12?1230}{9?1230}{6?1230}{3?1230}}
{{30?1530}{27?1530}{24?1530}{21?1530}{18?1530}{15?1530}{12?1530}{9?1530}{6?1530}{3?1530}}
{{30?1830}{27?1830}{24?1830}{21?1830}{18?1830}{15?1830}{12?1830}{9?1830}{6?1830}{3?1830}}
{{30?2130}{27?2130}{24?2130}{21?2130}{18?2130}{15?2130}{12?2130}{9?2130}{6?2130}{3?2130}}
{{30?2430}{27?2420}{24?2420}{21?2430}{18?2430}{15?2430}{12?2430}{9?2440}{6?2440}{3?2430}}//第2389高度Z不同
{{30?2730}{27?2720}{24?2720}{21?2730}{18?2730}{15?2730}{12?2730}{9?2740}{6?2740}{3?2730}}//第2389高度Z不同
{{30?3030}{27?3030}{24?3030}{21?3030}{18?3030}{15?3030}{12?3030}{9?3030}{6?3030}{3?3030}}
};
//eye?是視點,at?是視線參考點
static?Point?eye?=?{454545};
static?Point?at?=?{000};
//暫存鼠標操作獲取的位置信息
static?GLint?prePosXprePosY;
void?Display(void);
void?BezierCurve(Point?*pp?int?n); //繪制?Bezier?曲線
void?BezierSuface(Point?p[10][10]int?mint?n); //繪制?Bezier?曲面
void?Reshape(int?w?int?h);
void?mymouse(int?buttonint?stateint?xint?y);?//鼠標按鈕事件
void?mymotion(int?xint?y); //鼠標移動事件
int?fac(int?n); //計算階乘
double?powi(double?base?int?n); //計算冪
void?MoveTo(double?a?double?b?double?c);
void?LineTo(double?a?double?b?double?c);
void?init();
void?drawCurveframe(Point?pp[]?int?n); //繪制曲線控制點框架
void?drawSurfaceframe(Point?p[10][10]?int?mint?n);//繪制曲面控制點框架
void?drawCoordinate(); //繪制世界坐標
static?double?currentX?currentYcurrentZ; //用于繪制曲線曲面時,臨時保存當前點信息
static? double?interval_1?=?0.05; //繪制曲面時網格的間隔控制
static? double?interval_2?=?interval_1;?????//繪制曲面時曲線的節點間隔控制
INT?APIENTRY?_tWinMain(HINSTANCE?hInstance
HINSTANCE?hPrevInstance
LPTSTR lpCmdLine
int? nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
char?*argv[]?=?{?“hello“?“?“?};
int?argc?=?2;
glutInit(&argc?argv
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10596??2016-01-29?11:51??Berzier3D\Berzier3D.cpp
?????文件???????4230??2016-01-10?23:03??Berzier3D\Berzier3D.dsp
?????文件????????526??2016-01-10?23:03??Berzier3D\Berzier3D.dsw
?????文件????????809??2016-01-10?23:03??Berzier3D\Berzier3D.h
?????文件??????66560??2016-01-29?11:52??Berzier3D\Berzier3D.ncb
?????文件?????651264??2016-01-29?11:52??Berzier3D\Berzier3D.opt
?????文件???????1155??2016-01-29?11:52??Berzier3D\Berzier3D.plg
?????文件???????2544??2016-01-10?23:03??Berzier3D\Berzier3D.rc
?????文件?????114815??2016-01-15?21:32??Berzier3D\Debug\Berzier3D.exe
?????文件??????96884??2016-01-15?21:32??Berzier3D\Debug\Berzier3D.ilk
?????文件??????29046??2016-01-15?21:32??Berzier3D\Debug\Berzier3D.obj
?????文件????2120812??2016-01-10?23:10??Berzier3D\Debug\Berzier3D.pch
?????文件?????230400??2016-01-15?21:32??Berzier3D\Debug\Berzier3D.pdb
?????文件???????5232??2016-01-10?23:09??Berzier3D\Debug\Berzier3D.res
?????文件???????6226??2016-01-10?23:10??Berzier3D\Debug\MainWnd.obj
?????文件??????57377??2016-01-10?23:10??Berzier3D\Debug\StdAfx.obj
?????文件??????91136??2016-01-15?21:32??Berzier3D\Debug\vc60.idb
?????文件?????184320??2016-01-15?21:32??Berzier3D\Debug\vc60.pdb
?????文件???????1468??2016-01-10?23:03??Berzier3D\MainWnd.cpp
?????文件????????645??2016-01-10?23:03??Berzier3D\MainWnd.h
?????文件??????28672??2016-01-29?11:52??Berzier3D\Release\Berzier3D.exe
?????文件??????15859??2016-01-29?11:52??Berzier3D\Release\Berzier3D.obj
?????文件????2002952??2016-01-15?21:35??Berzier3D\Release\Berzier3D.pch
?????文件???????5232??2016-01-13?20:17??Berzier3D\Release\Berzier3D.res
?????文件???????2618??2016-01-15?21:35??Berzier3D\Release\MainWnd.obj
?????文件????????376??2016-01-15?21:35??Berzier3D\Release\StdAfx.obj
?????文件??????41984??2016-01-29?11:52??Berzier3D\Release\vc60.idb
?????文件???????3638??2016-01-10?23:03??Berzier3D\res\Berzier3D.ico
?????文件???????1406??2016-01-10?23:03??Berzier3D\res\Berzier3D_s.ico
?????文件????????946??2016-01-10?23:03??Berzier3D\resource.h
............此處省略11個文件信息
評論
共有 條評論