资源简介
文档包括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个文件信息
相关资源
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- Wi-Fi IoT智能家居套件-Hi3861(原理图
- stm32f103c8t6开发板原理图+pcb
- 基于arduino的红绿灯程序,包附原理图
- 步进电机调速原理.c
- 北邮-编译原理-词法分析
- STM32三菱PLC源码原理图
- 现代编译原理-C语言描述
- MFC绘制Bezier曲线B样条曲线曲线拟合
- 编译原理实验报告+代码+使用说明
- ACE技术内幕:深入解析ACE架构设计与
- 编译原理课程设计-C语言子集编译器
- 研华采集卡驱动程序工作原理及流程
- 《C++程序设计原理与实践》第二版英
- 基于51单片机的888光立方设计.rar
- 赋值语句翻译c语言实现四元式
- MH背包密码算法算法原理与实现
- 编译原理用C++消除左递归
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- c语言实现Paillier算法原理与实现
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 编译原理 LR0项目集规范族的构造 L
- C++数据结构原理与经典问题求解源代
- 山东大学编译原理实验源代码c++版
- 工程使用的STM32版FX2N源码和原理图
- 基于单片机控制的LED点阵屏 含设计报
评论
共有 条评论