资源简介
文档包括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个文件信息
相关资源
- LL(1)文法的实现-mfc-编译原理学习
- 词法分析代码内有报告
- HT66Fxx flash 单片机原理与应用C语言版
- 编译原理LL1文法的mfc实现含消除左递
- 单片机原理与应用及C51程序设计PPT谢
- 编译原理词法分析实验
- pl/0语言的编译器
- C++实现编译原理自动机、LL1文法、及
- 编译原理语义分析程序 c++实现
- Pt100温度报警 电路图程序
- DES原理及实现步骤,以及VC++关于DES加
- 编译原理 课程设计 DAG 报告+源码C++版
- 《大棚温湿度自动控制系统》 包括
- 编译原理课程设计----语法分析器(
- 编译原理简单的编译器源码
- C语言实现一个编译器-编译原理南开大
- 编译原理课程实验报告词法分析器及
- 编译原理与技术李文生:LR分析法C+
- C语言简化编译器前端 编译原理 LR1
- C-Minus编译器 编译原理实验
- PE文件解析器的原理C语言代码
- MCS-51单片机原理与应用(C语言版.
- 汽车动力总成悬置系统设计与匹配软
- LL1文法
- STC15单片机ESP8266开发试验程序含原理
- 逐点比较法插补原理VC程序设计
- 现代编译原理C语言描述-高清-完整目
- C++程序设计原理与实践(第2版)(基
- TINY扩充语言的语法分析(实现 while、
- 编译原理课程设计词法语法分析器
评论
共有 条评论