资源简介
基于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画花瓶,可以填充,选择颜色 代码
相关资源
- 读取串口数据并画实时曲线的VC 程序
- 绘制曲线图软件
- 串口绘制曲线 将收到的数据进行曲线
- C 源码 画出wav文件声音数据的波形曲
- Douglas-Peucker 曲线离散化算法.rar
- 曲面拟合算法程序
- txt测井曲线转换las2.0(新编)
- 易语言椭圆曲线算法加密文件源码
- 通过3D打印样品发现NMR曲线的不同姿态
- 基于曲率信息由曲线到曲面的重建与
- 基于曲率的适应性移动最小二乘曲面
- l-CURVE曲线适用于正则化算法
- VMOS管理结构及输出特性曲线电路图
- 具有非共形物质的致密黎曼曲面上的
- 自由曲线曲面造型技术(朱心雄)
- 最小二乘法拟合曲线
- 基于蒙特卡洛生成电动汽车充电负荷
- 曲线.zip
- 曲线拟合控件
- SM2椭圆曲线算法软件.rar
- rlc串联电路谐振特性曲线
- 原生3次贝塞尔曲线算法地图
- 通用黑洞时空中受限制的Maximin曲面和
- 基于曲线回归方程的矿井主排水泵永
- 基于科赫雪花曲线激励装置的涡流传
- 贝塞尔曲线的unity3d实现
- 响应曲面试验优选维生素E琥珀酸酯工
- 细集料沥青混合料蠕变柔量主曲线绘
- η变形的AdS 5×S 5超弦的量子光谱
- 贝塞尔曲线效果图动态-娱乐
评论
共有 条评论