资源简介
基于OpenGL的B样条曲线曲面的绘制算法,包含了均匀、准均匀、Bezier、各种非均匀B样条曲线曲面的绘制,阶次的升降,以及曲面的光照和纹理映射算法。
代码片段和文件信息
// Copyright (C) 1991 - 1999 Rational Software Corporation
#include “stdafx.h“
#include “BH_BSpline.h“
#include
BH_BSpline::BH_BSpline(int Row int Column int uOrder int vOrder int utype int vtype int Precision double* dpCtlPts)
{
iRow=Row;
iColumn=Column;
memset(dpControlPoints 0 MAXCONTROLPOINTS*sizeof(double));
if ( dpCtlPts != NULL )
set_dpControlPoints(dpCtlPts);
else
{
srand( (unsigned)time( NULL ) );
int u v;
for (v = 0; v <= iColumn; v++)
{
for (u = 0; u <= iRow; u++)
{
if ( iRow == 0 )
dpControlPoints[(v*(iRow+1)+u)*3+0] = -0.5;
else
dpControlPoints[(v*(iRow+1)+u)*3+0] = (GLdouble)u/iRow-0.5;
if ( iColumn == 0 )
dpControlPoints[(v*(iRow+1)+u)*3+1] = -0.5 ;
else
dpControlPoints[(v*(iRow+1)+u)*3+1] = (GLdouble)v/iColumn-0.5;
dpControlPoints[(v*(iRow+1)+u)*3+2] = (GLdouble)4/(iRow+iColumn)*(rand()%2);
}
}
}
memset(dpKnotsU 0 MAXKNOTS*sizeof(double));
memset(dpKnotsV 0 MAXKNOTS*sizeof(double));
UType=utype;
VType=vtype;
iUOrder=uOrder;
iVOrder=vOrder;
update_dpKnots(U);
update_dpKnots(V);
iPrecision=Precision;
bDrawControlPoints=false;
bDrawDiffVector=false;
bWireframe=true;
bTexture=false;
bLight=false;
for ( int v = 0; v for ( int u = 0; u bControlPointsSelected[v][u] = false ;
}
BH_BSpline::~BH_BSpline()
{
}
void BH_BSpline::set_dpControlPoints(double* value)
{
memcpy(dpControlPoints value (iRow+1)*(iColumn+1)*3*sizeof(double));
return;
}
void BH_BSpline::set_dpKnotsU(double* value)
{
memcpy(dpKnotsU value (iRow+iUOrder+1)*sizeof(double));
return;
}
void BH_BSpline::set_dpKnotsV(double* value)
{
memcpy(dpKnotsV value (iColumn+iVOrder+1)*sizeof(double));
return;
}
double* BH_BSpline::get_dpKnotsU()
{
return dpKnotsU ;
}
double* BH_BSpline::get_dpKnotsV()
{
return dpKnotsV ;
}
const int BH_BSpline::get_iPrecision() const
{
return iPrecision;
}
void BH_BSpline::set_iPrecision(int value)
{
iPrecision = value;
return;
}
const int BH_BSpline::get_iRow() const
{
return iRow;
}
const int BH_BSpline::get_iColumn() const
{
return iColumn;
}
void BH_BSpline::set_iUOrder(int value)
{
if ( value < 0 || value > iRow )
{
AfxMessageBox(“阶次k必须大于等于0且小于等于n“);
return;
}
iUOrder = value ;
update_dpKnots(U) ;
return;
}
void BH_BSpline::set_iVOrder(int value)
{
if ( value < 0 || value > iColumn )
{
AfxMessageBox(“阶次k必须大于等于0且小于等于n“);
return;
}
iVOrder = value ;
update_dpKnots(V) ;
return;
}
void BH_BSpline::set_UType(int type)
{
UType=type;
update_dpKnots(U);
}
void BH_BSpline::set_VType(int type)
{
VType=type;
update_dpKnots(V);
}
const int BH_BSpline::get_UType() const
{
return UType;
}
const int BH_BSpline::get_VType() const
{
return VType;
}
const int BH_BSpline::get_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 24790 2008-08-23 03:42 BSpline\BH_BSpline.cpp
文件 6513 2008-02-20 23:58 BSpline\BH_BSpline.h
文件 31620 2009-01-04 18:31 BSpline\BSpline.aps
文件 4113 2009-01-04 18:48 BSpline\BSpline.clw
文件 4491 2008-08-22 16:47 BSpline\BSpline.cpp
文件 5007 2008-02-18 22:46 BSpline\BSpline.dsp
文件 522 2008-01-22 11:42 BSpline\BSpline.dsw
文件 1483 2008-01-22 11:42 BSpline\BSpline.h
文件 279552 2009-01-04 18:50 BSpline\BSpline.ncb
文件 1583 2009-01-04 18:39 BSpline\BSpline.plg
文件 15254 2008-08-28 21:54 BSpline\BSpline.rc
文件 3328 2008-02-17 18:59 BSpline\BSplineDoc.cpp
文件 1827 2008-02-17 18:59 BSpline\BSplineDoc.h
文件 1425 2008-02-04 11:23 BSpline\BSplineSettingDlg.h
文件 3310 2008-02-19 17:52 BSpline\BSplineView.h
文件 1135533 2008-01-22 16:29 BSpline\BSPLINE_UML.mdl
文件 1135533 2008-01-22 16:29 BSpline\BSPLINE_UML.md~
文件 12619 2008-02-20 22:18 BSpline\MainFrm.cpp
文件 2895 2008-02-19 17:11 BSpline\MainFrm.h
文件 1137073 2008-01-22 14:38 BSpline\model.md~
文件 5522 2008-02-20 22:40 BSpline\PrimaryFunctionView.cpp
文件 1513 2008-02-19 15:37 BSpline\PrimaryFunctionView.h
文件 4338 2008-01-22 11:40 BSpline\ReadMe.txt
文件 2088 2008-02-19 17:11 BSpline\resource.h
文件 209 2008-01-22 11:40 BSpline\StdAfx.cpp
文件 1327 2008-01-22 11:40 BSpline\StdAfx.h
文件 15 2008-02-18 22:19 BSpline\新建 文本文档.txt
文件 130048 2008-02-19 20:44 BSpline\程序说明.doc
文件 1178 2008-01-28 09:13 BSpline\Restore.1\BSpline.lst
文件 8452 2008-01-27 21:47 BSpline\Restore.1\~BH_BSpline.~cpp
............此处省略24个文件信息
- 上一篇:物业管理系统源码+数据库
- 下一篇:OpenGL画花瓶,可以填充,选择颜色 代码
相关资源
- UDP动态温度曲线图
- VC绘图(曲线-清除显示-块复制-播放动
- OpenGL的B样条、贝塞尔曲线和贝塞尔曲
- LDPC仿真曲线.zip
- QT通过qwt实现曲线动态显示
- NURBS基函数
- echarts从后台数据库获取数据并加载多
- R语言KS曲线函数
- QT使用QCustomPlot绘制曲线并动态显示曲
- MSChart绘制可缩放的动态实时曲线
- qt实现读取txt数据并绘制曲线
- ifix历史曲线经典画面
- 椭圆曲线加密算法源代码
- 皮尔逊P-Ⅲ曲线应用软件
- 采用UDP或者TCP编写一个网络程序,该
- 机器人关节空间B样条轨迹优化设计
- 在ARM9和ARMLinux下利用QT编写的实时数据
- 光伏电池最大功率点跟增MPPT及仿真曲
- 测井曲线标准化程序
- 加强版Qcharts曲线支持散点图
- TimeDynamicListDemo.rar
- eetop.cn_Id-w~gm-id曲线的绘制
- 测井曲线处理程序
- 水文频率适线曲线
- VJ1604E-蒙泰新曲线.rar
- 计算机图形学画花瓣曲线
- 基于遗传算法B样条曲线优化在机器人
- 响应曲面法与设计
- 数值计算 函数逼近与曲线拟合 复化梯
- 皮尔逊3频率曲线绘制模版
评论
共有 条评论