B样条曲面代码


计算机图形学基础教程案例源码,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-02-21 00:05  BSpline1BH_BSpline.cpp

     文件       6513  2008-02-20 23:58  BSpline1BH_BSpline.h

     文件      31828  2008-06-01 21:55  BSpline1BSpline.aps

     文件       4143  2008-06-01 22:04  BSpline1BSpline.clw

     文件       4495  2008-02-04 10:36  BSpline1BSpline.cpp

     文件       5007  2008-02-18 22:46  BSpline1BSpline.dsp

     文件        522  2008-01-22 11:42  BSpline1BSpline.dsw

     文件       1483  2008-01-22 11:42  BSpline1BSpline.h

     文件     214016  2008-06-05 20:02  BSpline1BSpline.ncb

     文件      54784  2008-06-05 20:02  BSpline1BSpline.opt

     文件        248  2008-06-03 20:22  BSpline1BSpline.plg

     文件      15298  2008-02-19 20:21  BSpline1BSpline.rc

     文件       3328  2008-02-17 18:59  BSpline1BSplineDoc.cpp

     文件       1827  2008-02-17 18:59  BSpline1BSplineDoc.h

     文件       2270  2008-02-18 22:07  BSpline1BSplineSettingDlg.cpp

     文件       1425  2008-02-04 11:23  BSpline1BSplineSettingDlg.h

     文件      16323  2008-02-19 20:38  BSpline1BSplineView.cpp

     文件       3310  2008-02-19 17:51  BSpline1BSplineView.h

     文件    1135533  2008-01-22 16:29  BSpline1BSPLINE_UML.mdl

     文件    1135533  2008-01-22 16:29  BSpline1BSPLINE_UML.md~

     文件       2893  2008-02-16 16:49  BSpline1Debug8-8.txt

     文件        734  2008-02-01 18:59  BSpline1Debugh_bspline.txt

     文件        705  2008-02-02 13:06  BSpline1Debugh_bspline_order0.txt

     文件        723  2008-02-02 13:06  BSpline1Debugh_bspline_order1.txt

     文件        741  2008-02-02 13:06  BSpline1Debugh_bspline_order2.txt

     文件        759  2008-02-02 13:06  BSpline1Debugh_bspline_order3.txt

     文件        710  2008-02-05 12:10  BSpline1Debugh_bspline_u.txt

     文件    3302400  2008-06-01 21:56  BSpline1DebugBSpline.bsc

     文件     116789  2008-02-19 19:11  BSpline1DebugHelp.chm

     文件        759  2008-02-03 11:31  BSpline1Debug均匀U0-Un+k+1   0-1.txt

............此处省略34个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)