91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 630KB
    文件類型: .zip
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-03
  • 語言: 其他
  • 標簽: B樣條??

資源簡介

該文檔中包含了二次、三次B樣條曲線的實現方法,可以進行整合調用

資源截圖

代碼片段和文件信息

//****************************?????BSpline.cpp?????***********************************?
//?包含功能:二次B樣條平滑,三次B樣條平滑;二次B樣條平滑后節點插值
//
//?作者:????蔣錦朋???1034378054@qq.com
//?單位:????中國地質大學(武漢)?地球物理與空間信息學院
//?日期:????2014/12/03
//*************************************************************************************
#include?“StdAfx.h“
#include?“BSpline.h“


CBSpline::CBSpline(void)
{
}


CBSpline::~CBSpline(void)
{
}
//================================================================
//?函數功能:?二次B樣條平滑
//?輸入參數:?*pt?:給定點序列
//????????????Num:點個數
//?返回值:???無返回值

//?編輯日期:????2014/12/03
//================================================================
void?CBSpline::TwoOrderBSpline(CPosition?*ptint?Num)
{
CPosition?*temp=new?CPosition[Num];
for(int?i=0;i temp[i]=pt[i];

temp[0].x=2*temp[0].x-temp[1].x;??????????????????//??將折線兩端點換成延長線上兩點
temp[0].y=2*temp[0].y-temp[1].y;

temp[Num-1].x=2*temp[Num-1].x-temp[Num-2].x;
temp[Num-1].y=2*temp[Num-1].y-temp[Num-2].y;

CPosition?NodePt1NodePt2NodePt3;
double?t;
????for(int?i=0;i {
NodePt1=temp[i];?NodePt2=temp[i+1];?NodePt3=temp[i+2];
if(i==0)?????????????????????????????????????//??第一段取t=0和t=0.5點
{???
t=0;
pt[i].x=F02(t)*NodePt1.x+F12(t)*NodePt2.x+F22(t)*NodePt3.x;
pt[i].y=F02(t)*NodePt1.y+F12(t)*NodePt2.y+F22(t)*NodePt3.y;
t=0.5;
pt[i+1].x=F02(t)*NodePt1.x+F12(t)*NodePt2.x+F22(t)*NodePt3.x;
pt[i+1].y=F02(t)*NodePt1.y+F12(t)*NodePt2.y+F22(t)*NodePt3.y;
}else?if(i==Num-3)??????????????????????????//??最后一段取t=0.5和t=1點
{
t=0.5;
pt[i+1].x=F02(t)*NodePt1.x+F12(t)*NodePt2.x+F22(t)*NodePt3.x;
pt[i+1].y=F02(t)*NodePt1.y+F12(t)*NodePt2.y+F22(t)*NodePt3.y;
t=1;
pt[i+2].x=F02(t)*NodePt1.x+F12(t)*NodePt2.x+F22(t)*NodePt3.x;
pt[i+2].y=F02(t)*NodePt1.y+F12(t)*NodePt2.y+F22(t)*NodePt3.y;
}else??????????????????????????????????????//??中間段取t=0.5點
{
t=0.5;
pt[i+1].x=F02(t)*NodePt1.x+F12(t)*NodePt2.x+F22(t)*NodePt3.x;
pt[i+1].y=F02(t)*NodePt1.y+F12(t)*NodePt2.y+F22(t)*NodePt3.y;
}
}
delete?[]temp;
}

//================================================================
//?函數功能:?二次B樣條平滑在節點之間均勻插入指定個數點
//?輸入參數:?*pt?:給定點序列
//????????????Num:節點點個數
//????????????*InsertNum:?節點之間需要插入的點個數指針?
//?返回值:???無返回值
//
//?編輯日期:???2014/12/07
//=================================================================
void?CBSpline::TwoOrderBSplineInterpolatePt(CPosition?*&ptint?&Numint?*InsertNum)
{
if(pt==NULL?||?InsertNum==NULL)?return;

int?InsertNumSum=0;???????????????????????????????//??計算需要插入的點總數
for(int?i=0;i
CPosition?*temp=new?CPosition[Num];???????????????//??二次B樣條不需要增加點數,需要將首尾點替換掉
for(int?i=0;i temp[i]=pt[i];

temp[0].x=2*temp[0].x-temp[1].x;??????????????????//??將折線兩端點換成延長線上兩點
temp[0].y=2*temp[0].y-temp[1].y;

temp[Num-1].x=2*temp[Num-1].x-temp[Num-2].x;
temp[Num-1].y=2*temp[Num-1].y-temp[Num-2].y;

delete?[

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????8506??2014-12-07?21:39??B樣條曲線\BSpline.cpp
?????文件?????????453??2014-12-07?21:40??B樣條曲線\BSpline.h
?????文件??????178176??2014-12-02?15:51??B樣條曲線\b樣條曲線.ppt
?????文件?????????931??2014-09-27?08:28??B樣條曲線\position.h
?????文件?????????162??2016-09-20?15:56??B樣條曲線\~$調用.docx
?????文件?????1473536??2014-12-04?16:39??B樣條曲線\離散點擬合曲線_Bezier_B樣條.ppt
?????文件???????19788??2014-12-07?21:49??B樣條曲線\調用.docx
?????目錄???????????0??2016-11-15?18:44??B樣條曲線\

評論

共有 條評論