资源简介

文档包括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个文件信息

评论

共有 条评论