文档库 最新最全的文档下载
当前位置:文档库 › 计算机图形学实验1报告

计算机图形学实验1报告

计算机图形学实验1报告
计算机图形学实验1报告

设计和实现一个图形函数库

一、实验要求

设计和实现一个图形函数库,具有绘制直线段、任意圆弧、椭圆弧、多边形区域的阴影填充和颜色填充等功能。(仅调用画点函数)Windows API: setpixel(hdc,x,y,color)

二、实验平台

编程环境:Visual Studio 2008

编程语言:C#

操作系统:Windows 7

三、实验目的

在理解画直线段,圆弧,椭圆,多边形的画法,以及阴影填充和颜色填充算法的基础上,编程实现出一个简单的画图工具,加深对个算法的理解。

四、算法基本原理

1、画直线段

(1)算法思想

本程序采用Bresenham直线算法,基本思想为:

(以斜率在0~1之间的直线段为例)

这种情况下, 选择X方向为计长方向,即增量dx=1。如图3.2所示,设P i (x i,y i)是已选定的离直线最近的像素, 现在要决定P i+1是T 还是S。显然, 若d<0.5, 则S比较靠近直线, 应选S;若d>=0.5, 则应选T。(m= △y/△x)令e=d-0.5(初值为-0.5), 即有:

e <0时, 选P i+1(x i+1, y i), 更新e=e+m;

e >=0时, 选P i+1(x i+1, y i+1), 更新e=e+m-1;

2、画圆弧

(1)算法思想

本程序采用Bresenham圆弧算法,基本思想为:

与Bresenham直线生成算法一样, 其基本方法是从一个起点出发, 利用判别式选择下一个显示点。判别式的值通过简单计算获得, 其符号用作判断。

此算法在每一步都选择一个离开理想圆周最近的点P i(x i, y i), 使其误差项|D(P i)|=|x i2+y i2-R2|在每一步都是极小值。

设P i-1(x i-1, y i-1)已被选定为最靠近圆弧的点,下一步x=x i-1+1时, 要决定T还是S更接近理想的圆弧,令

D(S)=(x i-1+1)2+ (y i-1)2 -R2

D(T)=(x i-1+1)2+ (y i-1-1)2-R2

显然, |D(S)|>=|D(T)|时, 应该取T点; 反之则取S点

3、画椭圆弧

(1)算法思想

椭圆生成算法与圆形生成算法类似,都是先生成八分之一圆弧,然后根据对称原则生成图形,所不同的是椭圆有长轴和短轴之分,故需要提前求出45°方向椭圆焦点的坐标。然后再根据公式进行画点。

(2)程序流程

(3)实现效果

4、画多边形

(1)算法思想

多边形画法是基于直线画法实现的,第一次点击确定第一个点,第二次点击画出第一条直线,之后每次点击都已上一次点击为起点这次点击为终点画线,直到结束。

(2)程序流程

(3)实现效果

5、颜色填充

(1)算法思想

本程序可以由用户选择填充颜色,可对闭合图形内部进行填充,采用漫水法,进行递归画点。漫水法基本原理:

Procedure flood-fill-4(x,y,old-color,new-color:integer)

begin

if getpixel(framebuffer,x,y)=old-color

then begin

setpixel(framebuffer,x,y,newcolor);

flood-fill-4(x,y+1,old-color,new-color);

flood-fill-4(x,y-1,old-color,new-color);

flood-fill-4(x-1,y,old-color,new-color);

flood-fill-4(x-1,y-1,old-color,new-color);

end

end

(2)实现效果

6、阴影填充

(1)算法思想

本程序使用的填充线的斜率为-1,在任意闭合图形内点击,程序先填充点击点左下部分,后填充点击点右上部分。

(2)实现效果

五、实验总结

通过本次实验,我对基本图形的画法有了一定的了解,将课上的算法真正实践出来。并对算法进行了一定的修改和补充。在实验的同时,熟悉了C#的编程思想,通过上网查资料和与同学讨论,使我的编程水平有了一定的提高。

六、源程序清单

using System;

using System.Collections.Generic;

using https://www.wendangku.net/doc/6d14496815.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace 简单画图板

{

public partial class Form1 : Form

{

private Bitmap bitmap;

private Pen pen = new Pen(Color.Black);

private int choice = 0;

private SolidBrush sBrush;

private int x1, y1, x2, y2;

private int count = 0;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

bitmap = new Bitmap(panel1.Width, panel1.Height);//新建位图

}

private void radioButton1_CheckedChanged(object sender, EventArgs e) {

choice = 0;

count = 0;

}

private void radioButton2_CheckedChanged(object sender, EventArgs e) {

choice = 1;

}

private void radioButton3_CheckedChanged(object sender, EventArgs e) {

choice = 2;

}

private void radioButton4_CheckedChanged(object sender, EventArgs e) {

choice = 3;

}

private void radioButton5_CheckedChanged(object sender, EventArgs e) {

choice = 4;

}

private void radioButton6_CheckedChanged(object sender, EventArgs e) {

choice = 5;

}

private void pictureBox1_Click(object sender, EventArgs e)

{

ColorDialog colorDialog = new ColorDialog();

colorDialog.AllowFullOpen = true;

colorDialog.FullOpen = false;

if (colorDialog.ShowDialog() == DialogResult.OK)

{

pen = new Pen(colorDialog.Color);

sBrush = new SolidBrush(colorDialog.Color);

pictureBox1.BackColor = colorDialog.Color;

}

}

private void panel1_MouseDown(object sender, MouseEventArgs e) {

pen.Color = pictureBox1.BackColor;

switch (choice)

{

case 0://画直线

count++;

if (count % 2 != 0) { x1 = e.X; y1 = e.Y; }

else

{

x2 = e.X; y2 = e.Y;

line(x1, y1, x2, y2);

}

break;

case 1://画圆弧

x1 = e.X; y1 = e.Y;

circular(x1, y1, Convert.ToInt32(textBox1.Text)); break;

case 2://画椭圆

x1 = e.X; y1 = e.Y;

ellipse(x1, y1, Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox3.Text));

break;

case 3://画多边形

count++;

if (count == 1) { x2 = e.X; y2 = e.Y; }

else

{

x1 = x2; y1 = y2; x2 = e.X; y2 = e.Y;

line(x1, y1, x2, y2);//直接调用画直线的算法

}

break;

case 4://颜色填充

x1 = e.X; y1 = e.Y;

Color old_color = getpixel(x1, y1);

Color new_color = pictureBox1.BackColor;

flood_fill_4(x1, y1, old_color, new_color,0);

break;

case 5://阴影填充

x1 = e.X; y1 = e.Y;

old_color = getpixel(x1, y1);

new_color = pictureBox1.BackColor;

shade(x1, y1, old_color, new_color);

break;

}

}

private void panel1_MouseLeave(object sender, EventArgs e)

{

count = 0;//鼠标离开画图区,count清零

}

private void clr_img_Click(object sender, EventArgs e)//清除图像 {

panel1.Refresh();//刷新panel

bitmap = new Bitmap(panel1.Width, panel1.Height);//重绘bitmap }

/*重绘位图*/

private void draw()

{

Graphics g = panel1.CreateGraphics();

g.DrawImage(bitmap, 0, 0);

}

/*设置像素颜色*/

private void drawpixel(int x, int y, Pen pen)

{

if (x > 0 && x < panel1.Width && y > 0 && y < panel1.Height) {

bitmap.SetPixel(x, y, pen.Color);

}

}

/*获得像素颜色*/

private Color getpixel(int x, int y)

{

Color clr = Color.Black;

if (x > 0 && x < panel1.Width && y > 0 && y < panel1.Height) {

clr = bitmap.GetPixel(x, y);

}

return clr;

}

/*画直线Bresenham算法*/

public void line(int x1, int y1, int x2, int y2) {

int x, y, dx, dy, e;

dx = Math.Abs(x1 - x2);

dy = Math.Abs(y1 - y2);

if (dx >= dy)

{

e = -dx; x = x1; y = y1;

for (int i = 0; i < dx; i++)

{

drawpixel(x, y, pen);

if (x1 <= x2)

{

x++;

}

else

{

x--;

}

e = e + 2 * dy;

if (e >= 0)

{

if (y1 <= y2)

{

y++;

}

else

{

y--;

}

e = e - 2 * dx;

}

}

}

else

{

e = -dy; x = x1; y = y1;

for (int i = 0; i < dy; i++)

{

drawpixel(x, y, pen);

if (y1 <= y2)

{

y++;

}

else

{

y--;

}

e = e + 2 * dx;

if (e >= 0)

{

if (x1 <= x2)

{

x++;

}

else

{

x--;

}

e = e - 2 * dy;

}

}

}

draw();

}

/*画圆弧Bresenham算法*/

public void circular(int x1, int y1, int r) {

int x, y, d;

x = 0; y = r; d = 3 - 2 * r;

while (x < y)

{

/*画对称点*/

drawpixel(x1 + x, y1 + y, pen);

drawpixel(x1 + y, y1 + x, pen);

drawpixel(x1 + x, y1 - y, pen);

drawpixel(x1 + y, y1 - x, pen);

drawpixel(x1 - x, y1 + y, pen);

drawpixel(x1 - y, y1 + x, pen);

drawpixel(x1 - x, y1 - y, pen);

drawpixel(x1 - y, y1 - x, pen);

if (d < 0)

d = d + 4 * x + 6;

else

d = d + 4 * (x - y) + 10;

y--;

}

x++;

}

if (x == y)

/*画对称点*/

drawpixel(x1 + x, y1 + y, pen);

drawpixel(x1 + y, y1 + x, pen);

drawpixel(x1 + x, y1 - y, pen);

drawpixel(x1 + y, y1 - x, pen);

drawpixel(x1 - x, y1 + y, pen);

drawpixel(x1 - y, y1 + x, pen);

drawpixel(x1 - x, y1 - y, pen);

drawpixel(x1 - y, y1 - x, pen);

draw();

}

/*画椭圆*/

public void ellipse(int x1, int y1, int a, int b)

{/* 椭圆中心在(x1,y1),长半轴为a,短半轴为b */

int x, y, d, P_x, P_y, S_a, S_b;

S_a = a * a;

S_b = b * b;

P_x = (int)(0.5 + (float)S_a / Math.Sqrt((float)(S_a + S_b))); P_y = (int)(0.5 + (float)S_b / Math.Sqrt((float)(S_a + S_b))); /* 生成第一象限内的上半部分椭圆弧 */

x = 0;

y = b;

d = 4 * (S_b - b * S_a) + S_a;

/*画对称点*/

drawpixel(x1 + x, y1 + y, pen);

drawpixel(x1 + x, y1 - y, pen);

drawpixel(x1 - x, y1 + y, pen);

drawpixel(x1 - x, y1 - y, pen);

while (x <= P_x)

{

if (d <= 0)

d += 4 * S_b * (2 * x + 3);

else

{

d += 4 * S_b * (2 * x + 3) - 8 * S_a * (y - 1);

y--;

}

/*画对称点*/

drawpixel(x1 + x, y1 + y, pen);

drawpixel(x1 + x, y1 - y, pen);

drawpixel(x1 - x, y1 + y, pen);

drawpixel(x1 - x, y1 - y, pen);

}

/* 生成第一象限内的上半部分椭圆弧 */

x = a;

y = 0;

d = 4 * (S_a - a * S_b) + S_b;

/*画对称点*/

drawpixel(x1 + x, y1 + y, pen);

drawpixel(x1 + x, y1 - y, pen);

drawpixel(x1 - x, y1 + y, pen);

drawpixel(x1 - x, y1 - y, pen);

while (y < P_y)

{

if (d <= 0)

d += 4 * S_a * (2 * y + 3);

else

{

d += 4 * S_a * (2 * y + 3) - 8 * S_b * (x - 1);

x--;

}

y++;

/*画对称点*/

drawpixel(x1 + x, y1 + y, pen);

drawpixel(x1 + x, y1 - y, pen);

drawpixel(x1 - x, y1 + y, pen);

drawpixel(x1 - x, y1 - y, pen);

}

draw();

}

/*颜色填充*/

private void flood_fill_4(int x, int y, Color old_color, Color new_color,int depth) {

if (getpixel(x, y) == old_color)

{

drawpixel(x, y, pen);

flood_fill_4(x, y + 1, old_color, new_color,depth+1);

flood_fill_4(x, y - 1, old_color, new_color,depth+1);

flood_fill_4(x + 1, y, old_color, new_color,depth+1);

flood_fill_4(x - 1, y, old_color, new_color,depth+1);

}

if(depth == 0)

draw();

}

/*阴影填充*/

private void shade(int x, int y,Color old_color,Color new_color)

{

int x1, x2, y1, y2,t_x,t_y;

t_x = x;

t_y = y;

/*填充点击点左下部*/

while (getpixel(x + 1, y - 1) == old_color && getpixel(x, y) == old_color && getpixel(x, y - 1) == old_color && getpixel(x+1, y) == old_color)

{

x1 = x;

y1 = y;

x2 = x;

y2 = y;

while (getpixel(x1, y1) == old_color && getpixel(x1-1, y1) == old_color && getpixel(x1, y1-1) == old_color)

{

x1--;

y1--;

}

while (getpixel(x2, y2) == old_color && getpixel(x2 + 1, y2) == old_color && getpixel(x2, y2 + 1) == old_color)

{

x2++;

y2++;

}

line(x1, y1, x2, y2);

x = (x1 + x2) / 2 - 2;

y = (y1 + y2) / 2 + 2;

}

x = t_x+2;

y = t_y-2;

/*填充点击点右上部*/

while (getpixel(x - 1, y + 1) == old_color && getpixel(x, y) == old_color && getpixel(x, y + 1) == old_color && getpixel(x - 1, y) == old_color)

{

x1 = x;

y1 = y;

x2 = x;

y2 = y;

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

计算机网络实验报告精编WORD版

计算机网络实验报告精 编W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

计算机网络实验报告实验时间:2018年5月16日 参加人员:袁志伟朱兴旺周瑞锦刘小旭 一、实验名称:VLAN划分与配置 了解vlan的作用,掌握在一台交换机上划分VLan的方法和跨交换机的VLan的配置方法,掌握Trunk端口的配置方法。理解三层交换的原理,熟悉Vlan接口的配置 二、实验内容 首先,在一台交换机上划分VLan,用ping命令测试在同一VLan和不同VLan中设备的连通性。然后,在交换机上配置Trunk端口,用ping命令测试在同一VLan和不同VLan中设备的连通性。最后,利用交换机的三层功能,实现Vlan间的路由,再次用ping命令测试其连通性。 三、实验步骤 实验组网架构

图二 Trunk 端口的配置组网图 E0/11 E0/1 E0/1 E0/11 E0/13 E0/1S1 S2 Vlan2 Vlan2 Vlan3 Vlan3 注:S1中vlan2包括端口e0/1 到e0/5,vlan3包括端口e0/7到e 0/11; 注:vlan2包括端口e0/1到e0/5,vlan3包括端口e0/7到e0/11 E0/1 E0/2 E0/10 E0/11 Vlan2 Vlan3 S1 PA PB

图三 VLan 间通信的配置组网图 实施步骤 1.Vlan 的基本配置 步骤1 按照组网图一连接好设备,为交换机划分Vlan 。参考配置命令如下: system [Quidway]VLan 2 [Quidway-vlan2]port e 0/1 e 0/2 e 0/3 e 0/4 e 0/5 [Quidway-vlan2]quit [Quidway]VLan 3 [Quidway-vlan3]port e 0/7 to e 0/11 E0/11 E0/1 E0/1 E0/11 E0/13 E0/1PCA PCB PCC PCD 网关: 网关: S1 Vlan2 Vlan3 注:S1中vlan2包括端口e0/1 到e0/5,vlan3包括端口e0/7到e 0/11; S2 网关: 网关: VLAN2: VLAN3:

计算机图形学实验一

实验一二维基本图元的生成与填充 实验目的 1.了解并掌握二维基本图元的生成算法与填充算法。 2.实现直线生成的DDA算法、中点算法和Bresenham算法。 3.实现圆和椭圆生成的DDA和中点算法, 对几种算法的优缺点有感性认识。 二.实验内容和要求 1.选择自己熟悉的任何编程语言, 建议使用VC++。 2.创建良好的用户界面,包括菜单,参数输入区域和图形显示区域。 3.实现生成直线的DDA算法、中点算法和Bresenham算法。 4.实现圆弧生成的中点算法。 5.实现多边形生成的常用算法, 如扫描线算法,边缘填充算法。 6.实现一般连通区域的基于扫描线的种子填充算法。 7.将生成算法以菜单或按钮形式集成到用户界面上。 8.直线与圆的坐标参数可以用鼠标或键盘输入。 6. 可以实现任何情形的直线和圆的生成。 实验报告 1.用户界面的设计思想和框图。 2.各种实现算法的算法思想。 3.算法验证例子。 4.上交源程序。 直线生成程序设计的步骤如下: 为编程实现上述算法,本程序利用最基本的绘制元素(如点、直线等),绘制图形。如图1-1所示,为程序运行主界面,通过选择菜单及下拉菜单的各功能项分别完成各种对应算法的图形绘制。 图1-1 基本图形生成的程序运行界面 2.创建工程名称为“基本图形的生成”单文档应用程序框架 (1)启动VC,选择“文件”|“新建”菜单命令,并在弹出的新建对话框中单击“工程”标签。 (2)选择MFC AppWizard(exe),在“工程名称”编辑框中输入“基本图形的生成”作为工程名称,单击“确定”按钮,出现Step 1对话框。 (3)选择“单个文档”选项,单击“下一个”按钮,出现Step 2对话框。 (4)接受默认选项,单击“下一个”按钮,在出现的Step 3~Step 5对话框中,接受默认选项,单击“下一个”按钮。

计算机图形学实验内容汇总

计算机图形学实验 肖加清

实验一图形学实验基础 一、实验目的 (1)掌握VC++绘图的一般步骤; (2)掌握OpenGL软件包的安装方法; (3)掌握OpenGL绘图的一般步骤; (4)掌握OpenGL的主要功能与基本语法。 二、实验内容 1、VC++绘图实验 (1)实验内容:以下是绘制金刚石图案。已给出VC++参考程序,但里面有部分错误,请改正,实现以下图案。 N=3 N=4

N=5 N=10 N=30

N=50 (2)参考程序 //自定义的一个类 //此代码可以放在视图类的实现文件(.cpp) 里class CP2 { public: CP2(); virtual ~CP2(); CP2(double,double); double x; double y; }; CP2::CP2() { this->x=0.0; this->y=0.0; } CP2::~CP2() { } CP2::CP2(double x0,double y0) { this->x=x0; this->y=y0; }

//视图类的一个成员函数,这个成员函数可以放在OnDraw函数里调用。 //在视图类的头文件(.h)里定义此函数 void Diamond(); //在视图类的实现文件(.cpp)里实现此函数 void CTestView::Diamond() { CP2 *P; int N; double R; R=300; N=10; P=new CP2[N]; CClientDC dc(this); CRect Rect; GetClientRect(&Rect); double theta; theta=2*PI/N; for(int i=0;i #include #include #include //定义输出窗口的大小 #define WINDOW_HEIGHT 300

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

计算机网络实验报告 答案讲解

计算机网络实验报告 专业计算机科学与技术 班级计102 学号109074057 姓名王徽军 组号一组D 指导教师毛绪纹 安徽工业大学计算机学院 二○一二年十二月

目录 实验总体说明 (3) 实验一以太网帧的构成 (3) 实验三路由信息协议RIP (8) 实验四传输控制协议TCP (10) 实验五邮件协议SMTP、POP3、IMAP (12) 实验六超文本传输协议HTTP (14)

实验总体说明 1.实验总体目标 配合计算机网络课程的教学,加强学生对计算机网络知识(TCP/IP协议)的深刻理解,培养学生的实际操作能力。 2.实验环境 计算机网络协议仿真实验室: 实验环境:网络协议仿真教学系统(通用版)一套 硬件设备:服务器,中心控制设备,组控设备,PC机若干台 操作系统:Windows 2003服务器版 3.实验总体要求 ●按照各项实验内容做实验,记录各种数据包信息,包括操作、观察、记录、分析, 通过操作和观察获得直观印象,从获得的数据中分析网络协议的工作原理; ●每项实验均提交实验报告,实验报告的内容可参照实验的具体要求,但总体上应包 括以下内容:实验准备情况,实验记录,实验结果分析,算法描述,程序段,实验过程中遇到的问题以及对思考问题的解答等,实验目的、实验原理、实验步骤不需要写入实验报告中。 实验一以太网帧的构成 实验时间:_____________ 成绩:________________ 实验角色:_____________ 同组者姓名:______________________________

练习一:领略真实的MAC帧 q....U 00000010: 85 48 D2 78 62 13 47 24 58 25 00 00 00 00 00 00 .H襵b.G$X%...... 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 ............ 练习二:理解MAC地址的作用 ●记录实验结果 表1-3实验结果 本机MAC地址源MAC地址目的MAC地址是否收到,为什么 主机B 8C89A5-7570BB 8C89A5-757113 8C89A5-7570C1 是,主机A与主机B接在同一共享模块 主机D 8C89A5-771A47 8C89A5-757113 8C89A5-7570C1 是,主机C与主机D接在同一共享模块 主机E 8C89A5-757110 无无否,与主机A、C都不在同一共享模块 主机 F 8C89A5-7715F8 无无否,与主机A、C都不在同一共享模块 练习三:编辑并发送MAC广播帧 ●结合练习三的实验结果,简述FFFFFF-FFFFFF作为目的MAC地址的作用。 答:该地址为广播地址,作用是完成一对多的通信方式,即一个数据帧可发送给同一网段内的所有节点。 练习四:编辑并发送LLC帧 ●实验结果 帧类型发送序号N(S)接受序号N(R) LLC 001F 0 ●简述“类型和长度”字段的两种含义 答:一是如果字段的值小于1518,它就是长度字段,用于定义下面数据字段的长度;二是如果字段的值大于1536,用于定义一个封装在帧中的PDU分组的类型。 思考问题: 1.为什么IEEE802标准将数据链路层分割为MAC子层和LLC子层? 答:出于厂商们在商业上的激烈竞争,IEEE的802委员会未能形成一个统一的、最佳的局域网标准,而是被迫制定了几个不同标准,如802.4令牌总线网、802.5令牌环网等。为了使数据链路层能更好地适应多种局域网标准,802委员会就将局域网的数据链路层拆成两个子层,即逻辑链路控制

计算机图形学实验报告

目录

实验一直线的DDA算法 一、【实验目的】 1.掌握DDA算法的基本原理。 2.掌握DDA直线扫描转换算法。 3.深入了解直线扫描转换的编程思想。 二、【实验内容】 1.利用DDA的算法原理,编程实现对直线的扫描转换。 2.加强对DDA算法的理解和掌握。 三、【测试数据及其结果】 四、【实验源代码】 #include

#include #include #include GLsizei winWidth=500; GLsizei winHeight=500; void Initial(void) { glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0); } void DDALine(int x0,int y0,int x1,int y1) { glColor3f(1.0,0.0,0.0); int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { glPointSize(3); glBegin(GL_POINTS); glV ertex2i(int(x+0.5),(int)(y+0.5)); glEnd(); x+=xIncre; y+=yIncre; } } void Display(void) { glClear(GL_COLOR_BUFFER_BIT); DDALine(100,100,200,180); glFlush(); }

计算机网络模拟器实验报告记录(1)

计算机网络模拟器实验报告记录(1)

————————————————————————————————作者:————————————————————————————————日期:

计算机网络模拟器实验报告 学院:学号:姓名: 实验名称:计算机网络模拟器试验 实验说明:共5个实验,其中前3个必做,后2个选做。 一、实验目的 1、掌握模拟器软件的使用方法; 2、掌握配置PC、交换机、路由器的方法; 3、掌握为交换机设置VLAN,为端口设置TRUNK的 方法。 二、实验环境(请注意关闭杀毒软件) WinXP/WIN7、HW-RouteSim 2.2(软件请到BB 课程资源下载,下载后直接解压缩运行;下载前请 关闭杀毒软件) 三、实验步骤及结果 实验一:计算机和交换机基本设置 添加一个交换机,两个计算机,连接A电脑到交换机3号端口,B电脑到6号端口,双击交换机,进入终端配置:

system password: [Quidway]sysname S3026 ;交换机重命名为S3026 [S3026]super password 111 ;设置特权密码为111 [S3026]quit sys password:111 [S3026]display currect-config ;查看当前所有配置[S3026]display vlan all ;查看当前VLAN设置观察此时所有交换机端口都在同一个vlan1内。 双击小电脑A: login:root password:linux [root@PCAroot]# ? ;输入?号查看命令提示[root@PCAroot]#ifconfig eth0 10.65.1.1 netmask 255.255.0.0 双击小电脑B: login:root password:linux [root@PCAroot]#ifconfig eth0 10.65.1.2 netmask 255.255.0.0 点击A电脑做测试: [root@PCA root]#ping 10.65.1.2

计算机图形学实验三报告

计算机科学与通信工程学院 实验报告 课程计算机图形学 实验题目二维图形变换 学生姓名 学号 专业班级 指导教师 日期

成绩评定表

二维图形变换 1. 实验内容 完成对北极星图案的缩放、平移、旋转、对称等二维变换。 提示:首先要建好图示的北极星图案的数据模型(顶点表、边表)。另外,可重复调用“清屏”和“暂停”等函数,使整个变换过程具有动态效果。 2. 实验环境 软硬件运行环境:Windows XP 开发工具:visual studio 2008 3. 问题分析

4. 算法设计 程序框架: //DiamondView.h class CDiamondView : public CView { …… public: //参数输入和提示对话框 void Polaris();//北极星 …… }; //DiamondView.cpp void CDiamondView::OnMenuDiamond() { IsCutting = FALSE; if(dlgDiamond.DoModal()==IDOK) DrawDiamond(dlgDiamond.m_nVertex,dlgDiamond.

m_nRadius,100);//调用绘制金刚石的函数 } //北极星 void CDiamondView::Polaris() {......} 5. 源代码 //北极星 void hzbjx(CDC* pDC,long x[18],long y[18]) { CPen newPen1,*oldPen; newPen1.CreatePen(PS_SOLID,2,RGB(255,0,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex1[11]={{x[1],y[1]},{x[2],y[2]},{x[3],y[3]},{x[4],y[4]},{x[5],y[5]},{x[3],y[3]},{x[1],y[1]}, {x[6],y[6]},{x[3],y[3]},{x[7],y[7]},{x[5],y[5]}}; pDC->Polyline(vertex1, 11); newPen1.DeleteObject(); newPen1.CreatePen(PS_SOLID, 2, RGB(0,255,0)); oldPen = pDC->SelectObject(&newPen1); POINT vertex2[5]={{x[6],y[6]},{x[8],y[8]},{x[9],y[9]},{x[3],y[3]},{x[8],y[8]}}; pDC->Polyline(vertex2, 5); POINT vertex3[5]={{x[4],y[4]},{x[10],y[10]},{x[11],y[11]},{x[3],y[3]},{x[10],y[10]}}; pDC->Polyline(vertex3, 5);

计算机图形学实验

实验1 直线的绘制 实验目的 1、通过实验,进一步理解和掌握DDA和Bresenham算法; 2、掌握以上算法生成直线段的基本过程; 3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。 实验步骤 1、算法、原理清晰,有详细的设计步骤; 2、依据算法、步骤或程序流程图,用C语言编写源程序; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整; 5、对运行结果进行保存与分析; 6、把源程序以文件的形式提交; 7、按格式书写实验报告。 实验代码:DDA: # include # include

void DDALine(int x0,int y0,int x1,int y1,int color) { int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { putpixel((int)(x+0.5),(int)(y+0.5),4); x+=xIncre; y+=yIncre; } } main(){ int gdriver ,gmode ;

计算机图形学实验报告

计算机图形学 实验报告 姓名:谢云飞 学号:20112497 班级:计算机科学与技术11-2班实验地点:逸夫楼507 实验时间:2014.03

实验1直线的生成 1实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析 实验数据的能力; 编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的 直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记 录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编 制成表格,并绘制折线图比较两种算法的性能。 2实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One(自制平台)。 本实验提供名为 Experiment_Frame_One的平台,该平台提供基本 绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham 算法,并进行分析。 ?平台界面:如错误!未找到引用源。所示 ?设置:通过view->setting菜单进入,如错误!未找到引 用源。所示 ?输入:通过view->input…菜单进入.如错误!未找到引用 源。所示 ?实现算法: ◆DDA算法:void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) Mid_Bresenham法:void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1)

3实验结果 3.1程序流程图 1)DDA算法流程图:开始 定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增 量xIncre,y增量yIncre ↓ 输入两点坐标x1,y1,x0,y0 ↓ dx=x1-x0,dy=y1-y0; _________↓_________ ↓↓ 若|dx|>|dy| 反之 epsl=|dx| epsl=|dy| ↓________...________↓ ↓ xIncre=dx/epsl; yIncre=dy/epsl ↓ 填充(强制整形)(x+0.5,y+0.5); ↓←←←← 横坐标x+xIncre; 纵坐标y+yIncre; ↓↑ 若k<=epsl →→→k++ ↓ 结束 2)Mid_Bresenham算法流程图开始 ↓ 定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y ↓ 输入x0,y0,x1,y1 ______↓______ ↓↓ 若x0>x1 反之 x=x1;x1=x0;x0=x; x=x0;

计算机网络实验二报告

计算机网络实验报告 课程_ 计算机网络 _ 实验名称TCP/IP协议分析与验证 姓名实验日期: 学号实验报告日期: 同组人姓名报告退发: ( 订正、重做 ) 同组人学号 实验名称 TCP/IP协议分析与验证 一.实验环境(详细说明运行的操作系统,网络平台,机器的IP地址) 操作系统:Win8.1 网络平台:Wireshark 机器的IP地址:192.168.191.3 二.实验目的 通过本实验使学生了解和掌握报文捕获工具Wiresshark(或者EtherDetect) 的使用方法和基本特点,通过Wireshark软件捕获并分析基于链路层的协议数 据,包括ARP、ICMP、IP、TCP、UDP以及DNS、FTP、HTTP协议的报文格式以及 工作过程,促使学生真正了解TCP、UDP、IP等协议的构成 三.实验内容及步骤 【实验内容】 要求学生在各自机器上进行文件下载和浏览网页操作,通过Wireshark捕获报文并分析TCP/IP协议族中各种协议的报文格式和工作过程。然后在各自机器上发送ping、tracert命令,然后通过Wireshark捕获以太网帧并分析IP、ICMP和ARP协议的报文格式和工作过程 【实验步骤】 (1)启动Wireshark,并设置好相关参数; (2)启动Wireshark捕获功能;

(3)发送ping或tracert命令或进行文件下载和网页浏览; (4)分析Wireshark捕获的各种报文并验证TCP/IP协议的报文格式和工作过程【实验题目】 1-1.(1)设置获取数据包的filter为两台机之间。 (2)捕获两台机之间的IP数据报的报文。 (3)在报文的十六进制代码中找出源IP、目标IP、首部长度以及协议字段的值。 粘贴报文处: 源IP:c0 a8 bf 03 目标IP:c0 a8 a8 0a 首部长度:45 协议字段的值及含义:01:使用的协议为icmp协议 1-2.(1)设置获取数据包的filter为两台机之间。 (2)捕获两台机之间的ICMP报文。 (3)分析echo request和echo reply两种类型的ICMP报文的。 Ping or tracert?(运行结果):

计算机图形学实验一_画直线

大学实验报告 学院:计算机科学与技术专业:计算机科学与技术班级:计科131

如果 d<0,则M在理想直线下方,选右上方P1点; 如果 d=0,则M在理想直线上,选P1/ P2点。 由于d是xi和yi的线性函数,可采用增量计算提高运算效率。 1.如由pi点确定在是正右方P2点(d>0).,则新的中点M仅在x方向加1,新的d值为: d new=F(xi+2,yi+0.5)=a(xi+2)+b(yi+0.5)+c 而 d old=F(xi+1,yi+0.5)=a(xi+1)+b(yi+0.5)+c d new=d old+a= d old-dy 2.如由pi点确定是右上方P1点(d<0),则新的中点M在x和y方向都增加1,新的d值为 d new=F(xi+2,yi+1.5)=a(xi+2)+b(yi+1.5)+c 而 d old=F(xi+1,yi+0.5)=a(xi+1)+b(yi+0.5)+c d new=d old+a+b= d old-dy+dx 在每一步中,根据前一次第二迭中计算出的d值的符号,在正右方和右上方的两个点中进行选择。d的初始值: d0=F(x0+1,y0+0.5)=F(x0,y0)+a+b/2=a+b/2=-dy+dx/2 F(x0,y0)=0,(x0,y0)在直线上。 为了消除d的分数,重新定义 F(x,y)=2(ax+by+c) 则每一步需要计算的d new 是简单的整数加法 dy=y1-y0,dx=x1-x0 d0=-2dy+dx d new=d old-2*dy,当 d old>=0 d new=d old-2(dy-dx),当d old<0 Bresenham画线算法 算法原理: 与DDA算法 相似,Bresenham 画线算法也要在 每列象素中找到 与理想直线最逼 近的象素点。 根据直线的 斜率来确定变量 在x或y方向递 增一个单位。另 一个方向y或x

计算机图形学实验报告

计算机图形学 实验报告 学号:20072115 姓名: 班级:计算机 2班 指导老师:何太军 2010.6.19

实验一、Windows 图形程序设计基础 1、实验目的 1)学习理解Win32 应用程序设计的基本知识(SDK 编程); 2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。 4)学习MFC 类库的概念与结构; 5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框); 6)学习使用MFC 的图形编程。 2、实验内容 1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。(可选任务) 2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,This is my first SDI Application"。(必选任务) 3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。 3、实验过程

1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档; 2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,This is my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制; 3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。 4、实验结果 正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。成功地完成了实验。 结果截图: 5、实验体会 通过实验一,了解了如用使用基本的SDI编程函数绘制简单的图

计算机网络实验报告

计算机网络实验报告

实验1.跨交换机实现V ALN 1.1 实验环境 (1)Windows 操作系统的计算机 (2)https://www.wendangku.net/doc/6d14496815.html,NP.v6.0.Final.Beta (3).NET Framework 2.0 (4)Adobe Acrobat Reader 1.2 实验目的 理解VLAN如何跨交换机实现。 1.3 背景描述 假设宽带小区城域网中有两台楼道交换机,住户PC1、PC2、PC3、PC4分别接在交换机一的0/1、0/2端口和交换机二的0/1、0/2端口。PC1和PC3是一个单位的两家住户,PC2和PC4是另一个单位的两家住户,现要求同一个单位的住户能够互联互通,不同单位的住户不能互通。 1.4 实现功能 在同一VLAN里的计算机系统能跨交换机进行相互通信,而在不同VLAN 里的计算机系统不能进行相互通信。 1.5实验设备 Switch2950 2台 Pc 4台 1.6 实验步骤 (1).用Boson Network Designer 完成实验拓补图并连接好

(2).在模拟器重配置交换机和pc 。 先打开‘Boson NetSim’软件,再在‘Boson Network Designer’中点击Load…进行加载,进入Boson模拟器的环境,一边进行相关配置。 1)交换机S1进行配置 Switch>enable Switch#vlan database Switch(vlan)#vtp domain xyz Switch(vlan)#vtp server Switch(vlan)#vlan 2 name jsjx Switch(vlan)#exit

《计算机图形学实验报告》

一、实验目的 1、掌握中点Bresenham直线扫描转换算法的思想。 2掌握边标志算法或有效边表算法进行多边形填充的基本设计思想。 3掌握透视投影变换的数学原理和三维坐标系中几何图形到二维图形的观察流程。 4掌握三维形体在计算机中的构造及表示方法 二、实验环境 Windows系统, VC6.0。 三、实验步骤 1、给定两个点的坐标P0(x0,y0),P1(x1,y1),使用中点Bresenham直线扫描转换算法画出连接两点的直线。 实验基本步骤 首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。 其次、使用中点Bresenham直线扫描转换算法实现自己的画线函数,函数原型可表示如下: void DrawLine(CDC *pDC, int p0x, int p0y, int p1x, int p1y); 在函数中,可通过调用CDC成员函数SetPixel来画出扫描转换过程中的每个点。 COLORREF SetPixel(int x, int y, COLORREF crColor ); 再次、找到文档视图程序框架视图类的OnDraw成员函数,调用DrawLine 函数画出不同斜率情况的直线,如下图:

最后、调试程序直至正确画出直线。 2、给定多边形的顶点的坐标P0(x0,y0),P1(x1,y1),P2(x2,y2),P3(x3,y3),P4(x4,y4)…使用边标志算法或有效边表算法进行多边形填充。 实验基本步骤 首先、使用MFC AppWizard(exe)向导生成一个单文档视图程序框架。 其次、实现边标志算法或有效边表算法函数,如下: void FillPolygon(CDC *pDC, int px[], int py[], int ptnumb); px:该数组用来表示每个顶点的x坐标 py :该数组用来表示每个顶点的y坐标 ptnumb:表示顶点个数 注意实现函数FillPolygon可以直接通过窗口的DC(设备描述符)来进行多边形填充,不需要使用帧缓冲存储。(边标志算法)首先用画线函数勾画出多边形,再针对每条扫描线,从左至右依次判断当前像素的颜色是否勾画的边界色,是就开始填充后面的像素直至再碰到边界像素。注意对顶点要做特殊处理。 通过调用GDI画点函数SetPixel来画出填充过程中的每个点。需要画线可以使用CDC的画线函数MoveTo和LineTo进行绘制,也可以使用实验一实现的画直线函数。 CPoint MoveTo(int x, int y ); BOOL LineTo(int x, int y ); 实现边标志算法算法需要获取某个点的当前颜色值,可以使用CDC的成员函数 COLORREF GetPixel(int x, int y ); 再次、找到文档视图程序框架视图类的OnDraw成员函数,调用FillPolygon 函数画出填充的多边形,如下: void CTestView::OnDraw(CDC* pDC) { CTestcoodtransDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

计算机图形学实验报告

计算机图形学(computer graphics)的基本含义是使用计算机通过算法和程序在显示设备上构造图形。图形是人们通过计算机设计和构造出来的,不是通过摄像机、扫描仪等设备输入的图像。这里的图形可以是现实中存在的图形,也可以是完全虚拟构造的图形。以矢量图的形式呈现,更强调场景的几何表示,记录图形的形状参数与属性参数。例如,工程图纸(drawing),其最基本的图形单元是点、线、圆/弧等,其信息包含图元的几何信息与属性信息(颜色、线型、线宽等显式属性和层次等隐式属性)。 图像处理(image processing)则是研究图像的分析处理过程,图像处理研究的是图像增加、模式识别、景物分析等,研究对象一般为二维图像。图像以点阵图形式呈现,并记录每个点的灰度或色彩。例如,照片、扫描图片和由计算机产生的真实感和非真实感图·形等,最基本的图像单元(pels,picture elements)是点—像素(pixel),其信息实际上是点与它的属性信息(颜色、灰度、亮度等)。 计算机视觉(computer vision)包括获取、处理、分析和理解图像或者更一般意义的真实世界的高维数据方法,它的目的是产生决策形式的数字或者符号信息。

计算机图形学和计算机视觉是同一过程的两个方向。计算机图形学将抽象的语义信息转化成图形,计算机视觉则从图形中提取抽象的语义信息,图像处理研究的则是一个图像或一组图像之间的相互转化和关系,与语义信息无关。下表从输入和输出的角度对三者的区别进行辨析: 表2 图像处理&计算机视觉&计算机图形学对比 计算机图形学,输入的是对虚拟场景的描述,通常为多边形数组,而每个多边形由三个顶点组成,每个顶点包括三维坐标、贴图坐标、RGB 颜色等。输出的是图像,即二维像素数组。 计算机视觉,输入的是图像或图像序列,通常来自相机、摄像头或视频文件。输出的是对于图像序列对应的真实世界的理解,比如检测人脸、识别车牌。图像处理,输入的是图像,输出的也是图像。

计算机图形学上机实验指导

计算机图形学上机实验指导 指导教师:张加万老师 助教:张怡 2009-10-10

目录 1.计算机图形学实验(一) – OPENGL基础 ..................................... - 1 - 1.1综述 (1) 1.2在VC中新建项目 (1) 1.3一个O PEN GL的例子及说明 (1) 2.计算机图形学实验(二) – OPENGL变换 ..................................... - 5 - 2.1变换 (5) 3.计算机图形学实验(三) - 画线、画圆算法的实现....................... - 9 - 3.1MFC简介 (9) 3.2VC6的界面 (10) 3.3示例的说明 (11) 4.计算机图形学实验(四)- 高级OPENGL实验...................... - 14 - 4.1光照效果 (14) 4.2雾化处理 (16) 5.计算机图形学实验(五)- 高级OPENGL实验........................ - 20 - 5.1纹理映射 (20) 5.2反走样 (24) 6.计算机图形学实验(六) – OPENGL IN MS-WINDOWS .......... - 27 - 6.1 实验目标: (27) 6.2分形 (28)

1.计算机图形学实验(一) – OpenGL基础 1.1综述 这次试验的目的主要是使大家初步熟悉OpenGL这一图形系统的用法,编程平台是Visual C++,它对OpenGL提供了完备的支持。 OpenGL提供了一系列的辅助函数,用于简化Windows操作系统的窗口操作,使我们能把注意力集中到图形编程上,这次试验的程序就采用这些辅助函数。 本次实验不涉及面向对象编程,不涉及MFC。 1.2在VC中新建项目 1.2.1新建一个项目 选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里。 1.2.2为项目添加文件 为了使用OpenGL,我们需要在项目中加入三个相关的Lib文件:glu32.lib、glaux.lib、opengl32.lib,这三个文件位于c:\program files\microsoft visual studio\vc98\lib目录中。 选中菜单Project->Add To Project->Files项(或用鼠标右键),把这三个文件加入项目,在FileView中会有显示。这三个文件请务必加入,否则编译时会出错。或者将这三个文件名添加到Project->Setting->Link->Object/library Modules 即可。 点击工具条中New Text File按钮,新建一个文本文件,存盘为Test.c作为你的源程序文件,再把它加入到项目中,然后就可以开始编程了。 1.3一个OpenGL的例子及说明 1.3.1源程序 请将下面的程序写入源文件Test.c,这个程序很简单,只是在屏幕上画两根线。 #include

相关文档
相关文档 最新文档