数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx

上传人:b****2 文档编号:580585 上传时间:2023-04-29 格式:DOCX 页数:19 大小:110.29KB
下载 相关 举报
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第1页
第1页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第2页
第2页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第3页
第3页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第4页
第4页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第5页
第5页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第6页
第6页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第7页
第7页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第8页
第8页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第9页
第9页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第10页
第10页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第11页
第11页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第12页
第12页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第13页
第13页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第14页
第14页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第15页
第15页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第16页
第16页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第17页
第17页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第18页
第18页 / 共19页
数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx

《数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx(19页珍藏版)》请在冰点文库上搜索。

数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现.docx

数值分析实验报告用样条插值法插值的方法生成字体T的轮廓高斯消去法的实现

实验报告

 

实验课程:

数值分析

学生代号:

钟华

学号:

6100410038

专业班级:

网络工程101班

 

2012年6月1日

 

目录

 

一、用样条插值法插值方法生成字体T和5的轮廓……………………3

二、原子弹爆炸………………………………………………………16

 

南昌大学实验报告一

学代号:

学号:

61004100038专业班级:

网络工程101班

实验类型:

□验证□综合■设计□创新实验日期:

实验成绩:

一、实验目的

11.:

用样条插值的方法生成字体T和5的轮廓

1.2:

C或C++语言用Bezier曲线生成并编写程序

二、实验基本原理和内容

Times-Roman字体:

T

P0x 

P0y 

P1x 

P1y

P2x

P2y

P3x

P3y

237

620

237

620

237

120

237

120

237

120

237

35

226

24

143

19

143

19

143

19

143

0

143

0

143

0

143

0

435

0

435

0

435

0

435

0

435

19

435

19

435

19

353

23

339

36

339

109

339

109

339

108

339

620

339

620

339

620

507

620

529

602

552

492

552

492

552

492

576

492

576

492

576

492

576

492

570

662

570

662

570

662

570

662

6

662

6

662

6

662

6

662

0

492

0

492

0

492

0

492

24

492

24

492

24

492

48

662

71

620

183

620

183

620

183

620

237

620

237

620

Times-Roman字体:

5

P0x 

P0y 

P1x 

P1y

P2x

P2y

P3x

P3y

149

597

149

597

149

597

345

597

345

597

368

597

365

599

368

606

368

606

406

695

368

606

406

695

406

695

397

702

406

695

397

702

397

676

382

676

372

676

351

676

351

676

351

676

351

676

142

676

142

676

33

439

142

676

33

439

33

439

32

438

32

436

32

434

32

434

32

428

35

426

44

426

44

426

74

426

109

420

149

408

149

408

269

372

324

310

324

208

324

208

324

112

324

37

185

37

185

37

165

37

149

44

119

66

119

66

86

90

65

99

42

99

40

99

14

99

0

87

0

62

0

62

0

34

65

0

121

0

121

0

205

0

282

27

333

78

333

78

378

123

399

180

399

256

399

256

399

327

381

372

333

422

333

422

288

468

232

491

112

512

112

512

112

512

149

597

149

597

 

Bezier曲线生成:

2.1、确定曲线的阶次;

2.2计算Bernstein基函数的表达式:

生成字体T

共分成15段,每段用了三次的代数方程,用Bezier曲线生成

 

当n=3时

其中

2.3.把Bezier曲.线中的Pk写成分量坐标的形式

2.4.确定一合适的步长;控制t从0到1变化,求出一系列(x,y)坐标点;将其用小线段顺序连接起来。

三、主要仪器设备及耗材

PC微机

Windows操作系统

MicrosoftVisualStudio6.0集成开发环境

MicrosoftVisualStudio6.0集成开发环境的MSDN

四、实验程序及运行结果

T的轮廓:

4.1.在MicrosoftVisualStudio6.0集成开发环境下新建一个典型的“HelloWord”程序(W)命名为T;

4.2.在T.cpp文件编写用于求X和Y的Bernstein基函数

代码如下:

doublef(doublet,doublex0,doublex1,doublex2,doublex3)

{

doublez;z=x0*(1-t)*(1-t)*(1-t)+x1*3*t*(1-t)*(1-t)+x2*3*t*t*(1-t)+x3*t*t*t;

returnz;

}

4.3.在函数体内声明doublet;

4.4.找到函数入口:

//DrawText(hdc,szHello,strlen(szHello),&rt,DT_CENTER);

插进如下代码;

#include"stdafx.h"

#include"resource.h"

#defineMAX_LOADSTRING100

//编写Bernstein基函数

doublef(doublet,doublex0,doublex1,doublex2,doublex3)

{

doublez;

z=x0*(1-t)*(1-t)*(1-t)+x1*3*t*(1-t)*(1-t)+x2*3*t*t*(1-t)+x3*t*t*t;

returnz;

}

//GlobalVariables:

HINSTANCEhInst;//currentinstance

TCHARszTitle[MAX_LOADSTRING];//Thetitlebartext

TCHARszWindowClass[MAX_LOADSTRING];//Thetitlebartext

//Fowarddeclarationsoffunctionsincludedinthiscodemodule:

ATOMMyRegisterClass(HINSTANCEhInstance);

BOOLInitInstance(HINSTANCE,int);

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

LRESULTCALLBACKAbout(HWND,UINT,WPARAM,LPARAM);

intAPIENTRYWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

//TODO:

Placecodehere.

MSGmsg;

HACCELhAccelTable;

//Initializeglobalstrings

LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);

LoadString(hInstance,IDC_SHYAN1,szWindowClass,MAX_LOADSTRING);

MyRegisterClass(hInstance);

//Performapplicationinitialization:

if(!

InitInstance(hInstance,nCmdShow))

{

returnFALSE;

}

hAccelTable=LoadAccelerators(hInstance,(LPCTSTR)IDC_SHYAN1);

//Mainmessageloop:

while(GetMessage(&msg,NULL,0,0))

{

if(!

TranslateAccelerator(msg.hwnd,hAccelTable,&msg)){

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

returnmsg.wParam;

}

//

//FUNCTION:

MyRegisterClass()

//

//PURPOSE:

Registersthewindowclass.

//

//COMMENTS:

//

//Thisfunctionanditsusageisonlynecessaryifyouwantthiscode

//tobecompatiblewithWin32systemspriortothe'RegisterClassEx'

//functionthatwasaddedtoWindows95.Itisimportanttocallthisfunction

//sothattheapplicationwillget'wellformed'smalliconsassociated

//withit.

//

ATOMMyRegisterClass(HINSTANCEhInstance){

WNDCLASSEXwcex;

wcex.cbSize=sizeof(WNDCLASSEX);

wcex.style=CS_HREDRAW|CS_VREDRAW;

wcex.lpfnWndProc=(WNDPROC)WndProc;

wcex.cbClsExtra=0;

wcex.cbWndExtra=0;

wcex.hInstance=hInstance;

wcex.hIcon=LoadIcon(hInstance,(LPCTSTR)IDI_SHYAN1);

wcex.hCursor=LoadCursor(NULL,IDC_ARROW);

wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName=(LPCSTR)IDC_SHYAN1;

wcex.lpszClassName=szWindowClass;

wcex.hIconSm=LoadIcon(wcex.hInstance,(LPCTSTR)IDI_SMALL);

returnRegisterClassEx(&wcex);

}

//FUNCTION:

InitInstance(HANDLE,int)

//PURPOSE:

Savesinstancehandleandcreatesmainwindow

//COMMENTS:

//Inthisfunction,wesavetheinstancehandleinaglobalvariableand

//createanddisplaythemainprogramwindow.

BOOLInitInstance(HINSTANCEhInstance,intnCmdShow){

HWNDhWnd;

hInst=hInstance;//Storeinstancehandleinourglobalvariable

hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);

if(!

hWnd){

returnFALSE;

}

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

returnTRUE;

}

//

//FUNCTION:

WndProc(HWND,unsigned,WORD,LONG)

//PURPOSE:

Processesmessagesforthemainwindow.

//WM_COMMAND-processtheapplicationmenu

//WM_PAINT-Paintthemainwindow

//WM_DESTROY-postaquitmessageandreturn

LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){

intwmId,wmEvent;

doublet;//声明t;

PAINTSTRUCTps;

HDChdc;

TCHARszHello[MAX_LOADSTRING];

LoadString(hInst,IDS_HELLO,szHello,MAX_LOADSTRING);

switch(message){

caseWM_COMMAND:

wmId=LOWORD(wParam);

wmEvent=HIWORD(wParam);

//Parsethemenuselections:

switch(wmId){

caseIDM_ABOUT:

DialogBox(hInst,(LPCTSTR)IDD_ABOUTBOX,hWnd,(DLGPROC)About);

break;

caseIDM_EXIT:

DestroyWindow(hWnd);

break;

default:

returnDefWindowProc(hWnd,message,wParam,lParam);

}

break;

caseWM_PAINT:

hdc=BeginPaint(hWnd,&ps);

//TODO:

Addanydrawingcodehere...

RECTrt;

GetClientRect(hWnd,&rt);

//DrawText(hdc,szHello,strlen(szHello),&rt,DT_CENTER);

//插入代码:

for(t=0.0;t<1.0;t=t+0.001)

{

SetPixel(hdc,740-f(t,237,237,237,237),670-f(t,620,620,120,120),RGB(255,7,9));

SetPixel(hdc,740-f(t,237,237,226,143),670-f(t,120,35,24,19),RGB(255,7,9));

SetPixel(hdc,740-f(t,143,143,143,143),670-f(t,19,19,0,0),RGB(255,7,9));

SetPixel(hdc,740-f(t,143,143,435,435),670-f(t,0,0,0,0),RGB(255,7,9));

SetPixel(hdc,740-f(t,435,435,435,435),670-f(t,0,0,19,19),RGB(255,7,9));

SetPixel(hdc,740-f(t,435,353,339,339),670-f(t,19,23,36,109),RGB(255,7,9));

SetPixel(hdc,740-f(t,339,339,339,339),670-f(t,109,108,620,620),RGB(255,7,9));

SetPixel(hdc,740-f(t,339,507,529,552),670-f(t,620,620,602,492),RGB(255,7,9));

SetPixel(hdc,740-f(t,552,552,576,576),670-f(t,492,492,492,492),RGB(255,7,9));

SetPixel(hdc,740-f(t,576,576,570,570),670-f(t,492,492,662,662),RGB(255,7,9));

SetPixel(hdc,740-f(t,570,570,6,6),670-f(t,662,662,662,662),RGB(255,7,9));

SetPixel(hdc,740-f(t,6,6,0,0),670-f(t,662,662,492,492),RGB(255,7,9));

SetPixel(hdc,740-f(t,0,0,24,24),670-f(t,492,492,492,492),RGB(255,7,9));

SetPixel(hdc,740-f(t,24,48,71,183),670-f(t,492,602,620,620),RGB(255,7,9));

SetPixel(hdc,740-f(t,183,183,237,237),670-f(t,620,620,620,620),RGB(255,7,9));

}

EndPaint(hWnd,&ps);

break;

caseWM_DESTROY:

PostQuitMessage(0);

break;

default:

returnDefWindowProc(hWnd,message,wParam,lParam);

}

return0;

}

//Mesagehandlerforaboutbox.

LRESULTCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam){

switch(message){

caseWM_INITDIALOG:

returnTRUE;

caseWM_COMMAND:

if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL){

EndDialog(hDlg,LOWORD(wParam));

returnTRUE;

}

break;

}

returnFALSE;

}

T轮廓图如下:

 

5轮廓:

其他都一样,只要修改4.4的插入的代码为:

for(t=0.0;t<1.0;t=t+0.001)

{

SetPixel(hdc,f(t,149,149,149,368),680-f(t,597,597,597,597),RGB(255,0,0));SetPixel(hdc,f(t,345,368,365,368),680-f(t,597,597,599,606),RGB(255,0,0));

SetPixel(hdc,f(t,368,406,368,406),680-f(t,606,695,606,695),RGB(255,0,0));

SetPixel(hdc,f(t,406,397,406,397),680-f(t,695,702,695,702),RGB(255,0,0));

SetPixel(hdc,f(t,397,382,372,351),680-f(t,676,676,676,676),RGB(255,0,0));

SetPixel(hdc,f(t,351,351,351,142),680-f(t,676,676,676,676),RGB(255,0,0));

SetPixel(hdc,f(t,142,33,142,33),680-f(t,676,439,676,439),RGB(255,0,0));

SetPixel(hdc,f(t,33,32,32,32),680-f(t,439,438,436,434),RGB(255,0,0));

SetPixel(hdc,f(t,32,32,35,44),680-f(t,434,428,426,426),RGB(255,0,0));

SetPixel(hdc,f(t,44,74,109,149),680-f(t,426,426,420,408),RGB(255,0,0));

SetPixel(hdc,f(t,149,269,324,324),680-f(t,408,372,310,208),RGB(255,0,0));

SetPixel(hdc,f(t,324,324,324,185),680-f(t,208,180,37,37),RGB(255,0,0));

SetPixel(hdc,f(t,185,165,149,119),680-f(t,37,37,44,66),RGB(255,0,0));

SetPixel(hdc,f(t,119,86,65,42),680-f(t,66,90,99,99),RGB(255,0,0));

SetPixel(hdc,f(t,42,14,0,0),680-f(t,99,99,87,62),RGB(255,0,0));

SetPixel(hdc,f(t,0,0,65,121),680-f(t,62,24,0,0),RGB(255,0,0));

SetPixel(hdc,f(t,121,205,282,333),680-f(t,0,0,27,78),RGB(255,0,0));

SetPixel(hdc,f(t,333,378,399,399),680-f(t,78,123,180,256),RGB(255,0,0));

SetPixel(hdc,f(t,399,399,381,333),680-f(t,256,327,372,422),RGB(255,0,0));

SetPixel(hdc,f(t,333,288,232,112),680-f(t,422,468,491,512),RGB(255,0,0));

SetPixel(hdc,f(t,112,112,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2