資源簡介
這些程序中,有不少算法是對書上所講算法的改進和創新(我們用的是北京大學出版社出版的那本《計算機圖形學》),并在實踐過程中發現了書上所講的某些算法是不正確的,并不能實現預期的效果。這些源程序在WIN-TC上運行通過。這些源程序,無論是對學習C語言,或計算機圖形學來說都具有很高的參考價值。我搜集了6個班的實驗源程序和實驗報告,可以通過對比來加深對有關算法的理解。
所搜集的這些源程序上包含了計算機圖形學幾乎所有的基本算法:
簡單的二維圖形的生成
二維填充圖元的生成
二維圖形的剪裁
二維圖形一些基本變換、簡單的曲線變換
三維圖形的變換 、面的消隱、平行投影
直線生成、字符顯示和圖形變換算法;
具體內容包括:
直線生成算法和線寬與線型處理
圓,橢圓和拋物線的生成算法
二維填充圖的生成算法
字符的生成算法
二維裁剪生成算法
線段、園、區域填充、線型線寬、字符、裁剪、等基本圖形生成算法;樣條、Bezier、等常用曲線的生成算法;Coons曲面、Bezier曲面、B樣條曲面等常用曲面的生成算法。
并
給出一些綜合應用的例子

代碼片段和文件信息
#include
#include
#include?“stdio.h“
#include?“graphics.h“
#include?“math.h“
#include“dos.h“
#define?closegr?closegraph
/*下面為掃描線填充*/
#define?MAXPOINT??5
/***********************/
#define?max?100
#define?true?1
#define?error?0
#define?false?0
/*#define?ORG_X?320?*//*定義原點坐標*/
/*#define?ORG_Y?240*/
/*************************/
#define?Iterative??24
#define?Iterative2?(Iterative*Iterative)
#define?Iterative3?(Iterative2*Iterative)
#define?X?0
#define?Y?1
typedef?float?Vector[2];
/*************************/
/*#define?PATTERN_A?0
#define?PATTERN_B?1
#define?PATTERN_SOLID?-1*/
typedef?float?vector[2];
typedef?struct{
int?xy;
}Vertex;
typedef?Vertex?Edge[2];
typedef?Vertex?VertexArray[max];
/**************************************************************/
typedef?struct{
???????????????int?y_top;
???????????????float?x_int;
???????????????int?delta_y;
???????????????float?x_change_per_scan;
???????????????}EACH_ENTRY;
EACH_ENTRY?sides[MAXPOINT];
int?x[MAXPOINT]y[MAXPOINT];
int?first_slast_sscanbottomscanx_int_countside_count;
int?pattern[9][7]={111100001001000100100011100001
???????????????????100000100000010000011100000000000};??/*?定義字符掩膜的矩陣*/
/**********************************************************************/
/******************************************************************/
struct?matrix{????float?h[3][3];???};???????????????
struct?wc{????float?xy;?};??????????????????
struct?matrix?*thematrix;???????????????
float?radius(float?a)
{?return?a*3.14/180;}?
/***************************************************************/
void?initgr(void)?/*?BGI初始化?*/
{
??int?gd?=?DETECT?gm?=?0;?/*?和gd?=?VGAgm?=?VGAHI是同樣效果?*/
??registerbgidriver(EGAVGA_driver);/*?注冊BGI驅動后可以不需要.BGI文件的支持運行?*/
??initgraph(&gd?&gm?““);
}
/*界面函數*/
/******************************************************/
/*************************************************************/
void?drawmat(char?*matint?matsizeint?xint?yint?color)
/*依次:字模指針、點陣大小、起始坐標(xy)、顏色*/
{
??int?i?j?k?n;
??n?=?(matsize?-?1)?/?8?+?1;
??for(j?=?0;?j?????for(i?=?0;?i???????for(k?=?0;k?8;?k++)
????????if(mat[j?*?n?+?i]?&?(0x80?>>?k))??/*測試為1的位則顯示*/
??????????putpixel(x?+?i?*?8?+?k?y?+?j?color);
}
/*heng*/
void?heng(int?hxint?hy)
{
?setcolor(YELLOW);
?line(hx+4hy+0hx+11hy+0);
?setcolor(WHITE);
?line(hx+3hy+1hx+12hy+1);
?setcolor(YELLOW);
?line(hx+4hy+2hx+11hy+2);
}
/*shu*/
void?shu(int?sxint?sy)
{
?setcolor(YELLOW);
?line(sx+0sy+3sx+0sy+10);
?setcolor(WHITE);
?line(sx+1sy+2sx+1sy+11);
?setcolor(YELLOW);
?line(sx+2sy+3sx+2sy+10);
}
/*############--畫0函數--##############*/
void?draw_0(int?x0int?y0)
{
?heng(x0y0);
?heng(x0y0+20);
?shu?(x0y0);
?shu?(x0+13y0);
?shu?(x0+13y0+10);
?shu?(x0y0+10);
}
/*############--畫1函數--##############*/
void?draw_1(int?x0int?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????59005??2005-12-13?09:35??計算機圖形學源代碼\信科0301\newmorning.c
?????文件??????59143??2005-12-13?10:53??計算機圖形學源代碼\信科0301\信科0301\newmorning.c
?????文件??????78902??2005-12-13?10:53??計算機圖形學源代碼\信科0301\信科0301\NEWMOR~1.EXE
?????文件??????35329??2005-12-13?10:53??計算機圖形學源代碼\信科0301\信科0301\NEWMOR~1.OBJ
?????文件?????821760??2005-12-13?09:57??計算機圖形學源代碼\信科0301\信科0301\計算機圖形學論文?信科0301.doc
?????文件?????821760??2005-12-13?09:57??計算機圖形學源代碼\信科0301\計算機圖形學論文?信科0301.doc
?????文件????????373??2005-12-03?00:41??計算機圖形學源代碼\信科0302\11.c
?????文件??????24458??2005-12-03?00:36??計算機圖形學源代碼\信科0302\11.EXE
?????文件????????441??2005-12-03?00:36??計算機圖形學源代碼\信科0302\11.OBJ
?????文件??????79398??2005-12-13?23:51??計算機圖形學源代碼\信科0302\3D.c
?????文件??????97428??2005-12-13?23:51??計算機圖形學源代碼\信科0302\3D.EXE
?????文件??????72571??2005-12-13?23:51??計算機圖形學源代碼\信科0302\3D.OBJ
?????文件?????100052??2005-12-04?14:35??計算機圖形學源代碼\信科0302\3D02D2~1.EXE
?????文件??????75730??2005-12-04?14:35??計算機圖形學源代碼\信科0302\3D02D2~1.OBJ
?????文件?????111172??2005-12-13?23:49??計算機圖形學源代碼\信科0302\3D02E2~1.EXE
?????文件??????90582??2005-12-13?23:49??計算機圖形學源代碼\信科0302\3D02E2~1.OBJ
?????文件?????105580??2005-12-14?00:00??計算機圖形學源代碼\信科0302\3D0AD2~1.EXE
?????文件??????83491??2005-12-14?00:00??計算機圖形學源代碼\信科0302\3D0AD2~1.OBJ
?????文件?????109152??2005-12-14?00:00??計算機圖形學源代碼\信科0302\3D0AE2~1.EXE
?????文件??????86016??2005-12-14?00:00??計算機圖形學源代碼\信科0302\3D0AE2~1.OBJ
?????文件??????78468??2005-12-13?23:59??計算機圖形學源代碼\信科0302\3DBB18~1.EXE
?????文件??????48478??2005-12-13?23:59??計算機圖形學源代碼\信科0302\3DBB18~1.OBJ
?????文件??????84108??2005-12-13?23:58??計算機圖形學源代碼\信科0302\3DFD1C~1.EXE
?????文件??????56228??2005-12-13?23:58??計算機圖形學源代碼\信科0302\3DFD1C~1.OBJ
?????文件??????68439??2005-12-13?23:58??計算機圖形學源代碼\信科0302\3Dgraphics-XiaoYing.c
?????文件??????37793??2003-01-01?02:12??計算機圖形學源代碼\信科0302\3Dgraphics1.c
?????文件??????53020??2005-12-14?00:03??計算機圖形學源代碼\信科0302\3Dgraphics1_TouShi.c
?????文件??????43451??2005-12-14?00:02??計算機圖形學源代碼\信科0302\3Dgraphics2.c
?????文件??????86611??2005-12-14?00:01??計算機圖形學源代碼\信科0302\3Dgraphics4.c
?????文件??????86588??2005-12-14?00:00??計算機圖形學源代碼\信科0302\3Dgraphics5.c
............此處省略344個文件信息
- 上一篇:圖像FFT卷積
- 下一篇:C++ pca lda
評論
共有 條評論