opengl实验报告

opengl实验报告
opengl实验报告

本科实验报告

课程名称:计算机图形学实验类型:上机

实验项目名称:实现五边形的扫描转换算法

学生姓名:_单晨鑫__ 专业:软件工程学号:24320092202561

指导老师:段鸿

实验地点:院系专用教室实验日期:_2012-04-03_

一、实验目的

编程实现五边形的扫描转换算法。(非自交的五个点,可以不用检测)

二、实验内容

实现任意一个非自交五边形的扫描转换(要求采用扫描线算法)(只能用OpenGL的画点函数)

1. 五边形的五个点应可以自行指定(指定方式不限,但用户给定的五个顶点要满足非自交条件,因此程序不用做自交判断)

2. 填充颜色应可指定,指定完屏幕自动刷清。函数直接画,否则此项为0分,只能用画点方式画GL_POINTS;

上述步骤可以用OpenGL的点画方式GL_POINTS实现;

三、实验环境

系统:Windows XP或者Windows 7

软件:VC++ 6.0 或者VS

四、实验中遇到的主要问题及其解决方式

问题1:五边形的边表的建立,活动边表的建立

解决方式:耐心慢慢的检查

五、源代码

边表和活动边表建立和画点算法

//定义结构体用于活性边表AEL和边表ET

typedef struct XET

{

float x;

float dx,ymax;

XET* next;

}ET,AEL;

//定义点结构体point

struct point

{

float x;

float y;

}polypoint[POINTNUM]={100,200,250,100,400,250,400,400,100,400};

//polypoint[POINTNUM]={250,50,550,150,550,400,250,250,100,350};//多边形顶点//mypoint[POINTNUM]={100,100,200,100,200,200,100,200};//正方形

glBegin (GL_POINTS);

//计算最高点的y坐标(扫描到此结束)

int MaxY=0;

int i;

for(i=0;i

if(polypoint[i].y>MaxY)

MaxY=polypoint[i].y;

//初始化AEL表

AEL *pAEL=new AEL;

pAEL->next=NULL;

//初始化ET表

ET *pET[1024];

for(i=0;i<=MaxY;i++)

{

pET[i]=new ET;

pET[i]->next=NULL;

}

//扫描并建立ET表

for(i=0;i<=MaxY;i++)

{

for(int j=0;j

if(polypoint[j].y==i)

{

if(polypoint[(j-1+POINTNUM)%POINTNUM].y>polypoint[j].y)

{

ET *p=new ET;

p->x=polypoint[j].x;

p->ymax=polypoint[(j-1+POINTNUM)%POINTNUM].y;

p->dx=(polypoint[(j-1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j-1+P OINTNUM)%POINTNUM].y-polypoint[j].y);

p->next=pET[i]->next;

pET[i]->next=p;

}

if(polypoint[(j+1+POINTNUM)%POINTNUM].y>polypoint[j].y)

{

ET *p=new ET;

p->x=polypoint[j].x;

p->ymax=polypoint[(j+1+POINTNUM)%POINTNUM].y;

p->dx=(polypoint[(j+1+POINTNUM)%POINTNUM].x-polypoint[j].x)/(polypoint[(j+1+ POINTNUM)%POINTNUM].y-polypoint[j].y);

p->next=pET[i]->next;

pET[i]->next=p;

}

}

}

//建立并更新活性边表AEL

for(i=0;i<=MaxY;i++)

{

//计算新的交点x,更新AEL

ET *p=pAEL->next;

while(p)

{

p->x=p->x + p->dx;

p=p->next;

}

//更新后新AEL先排序

//断表排序,不再开辟空间

AEL *tq=pAEL;

p=pAEL->next;

tq->next=NULL;

while(p)

{

while(tq->next && p->x >= tq->next->x)

tq=tq->next;

ET *s=p->next;

p->next=tq->next;

tq->next=p;

p=s;

}

AEL *q=pAEL;

p=q->next;

while(p)

{

if(p->ymax==i)

{

q->next=p->next;

delete p;

p=q->next;

}

else

{

q=q->next;

p=q->next;

}

}

//将ET中的新点加入AEL,并用插入法按X值递增排序p=pET[i]->next;

q=pAEL;

while(p)

{

while(q->next && p->x >= q->next->x)

q=q->next;

ET *s=p->next;

p->next=q->next;

q->next=p;

p=s;

}

//像素填充颜色

p=pAEL->next;

while(p && p->next)

{

for(float j=p->x;j<=p->next->x;j++)

glVertex2i((int)j,i);

p=p->next->next;//考虑端点情况

}

}

六、程序流程图

画线算法

1、构造基本的数据结构;

2、建立更新边表和活动边表;

3、根据活动边表画出其中的点;

4、结束画布。

七、实验总结

这次实验让我们了解到多边形的构造以及点分解过程以及扫描线算法,在效率上更有优势,但是比较复杂。

最新西华大学机器人创新设计实验报告(工业机械手模拟仿真)

实验报告 (理工类) 课程名称: 机器人创新实验 课程代码: 6003199 学院(直属系): 机械学院机械设计制造系 年级/专业/班: 2010级机制3班 学生姓名: 学号: 实验总成绩: 任课教师: 李炜 开课学院: 机械工程与自动化学院 实验中心名称: 机械工程基础实验中心

一、设计题目 工业机器人设计及仿真分析 二、成员分工:(5分) 三、设计方案:(整个系统工作原理和设计)(20分) 1、功能分析 工业机器人由操作机(机械本体)、控制器、伺服驱动系统和检测传感装置构成,是一种仿人操作、自动控制、可重复编程、能在三维空间完成各种作业的机电一体化自动化生产设备。特别适合于多品种、变批量的柔性生产。它对稳定、提高产品质量,提高生产效率,改善劳动条件和产品的快速更新换代起着十分重要的作用。机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术,是当代研究十分活跃,应用日益广泛的领域。机器人应用情况,是一个国家工业自动化水平的重要标志。机器人并不是在简单意义上代替人工的劳动,而是综合了人的特长和机器特长的一种拟人的电子机械装置,既有人对环境状态的快速反应和分析判断能力,又有机器可长时间持续工作、精确度高、抗恶劣环境的能力,从某种意义上说它也是机器的进化过程产物,它是工业以及非产业界的重要生产和服务性设备,也是先进制造技术领域不可缺少的自动化设备。 本次我们小组所设计的工业机器人主要用来完成以下任务: (1)、完成工业生产上主要焊接任务; (2)、能够在上产中完成油漆、染料等喷涂工作; (3)、完成加工工件的夹持、送料与转位任务; (5)、对复杂的曲线曲面类零件加工;(机械手式数控加工机床,如英国DELCAM公司所提供的风力发电机叶片加工方案,起辅助软体为powermill,本身为DELCAM公司出品)

DNS抓包分析

TCP/IP原理与应用课程作业一对DNS域名系统的抓包分析 姓名:XXX 学号:XXXXXXXXXX 学院:计算机科学与工程

一、实验目的 通过网络抓包试验,深刻理解TCP/IP协议簇中DNS域名系统的使用方式与报文具体格式与含义,加强对课程的理解与应用。 二、相关原理 2.1 DNS的定义 DNS 是域名系统(Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS 命名用于Internet 等TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。 2.2 DNS的构成 在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试运行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。 2.3 DNS的查询 DNS查询可以有两种解释,一种是指客户端查询指定DNS服务器上的资源记录(如A记录),另一种是指查询FQDN名的解析过程。 一、查询DNS服务器上的资源记录 您可以在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。除了以上方法外,还可以通过一些DNS查询站点如国外的国内的查询域名的DNS信息。 二、FQDN名的解析过程查询 若想跟踪一个FQDN名的解析过程,在Linux Shell下输入dig www +trace,返回的结果包括从跟域开始的递归或迭代过程,一直到权威域名服务器。 2.4 DNS的报文格式 DNS报文的首部:

计 算 机 图 形 学 实 验 报 告

实验一:基本图形生成算法演示 一、实验目的与要求 了解OpenGL图形软件包绘制图形的基本过程及其程序框架,并在已有的程序框架中添加代码实现直线和圆的生成算法,演示直线和圆的生成过程,从而加深对直线和圆等基本图形生成算法的理解。 二、实验内容 实验要求:(1)理解glut程序框架 (2)理解窗口到视区的变换 (3)理解OpenGL实现动画的原理 (4)添加代码实现中点Bresenham算法画直线 (5)添加代码实现改进Bresenham算法画直线 (6)添加代码实现圆的绘制(可以适当对框架坐标系进行修改) 实验操作和步骤:本次实验主要的目的是为了掌握基本画线和画圆算法,对于书上给出的代码,要求通过本次试验来具体的实现。由于实验已经给出大体的框架,所以只需要按照书上的算法思想来设计具体实现代码,对于直线DDA算法,中点Bresenham算法及其改进算法,以及Bresenham画圆算法都有进一步的体会。DDA算法是对每一步都要进行增量处理,然后取整,绘制,而Bresenham通过判断误差函数和求取递推公式来实现。特别是对于整数的选择取舍,以及代码的流程和循环的控制有一个深入的了解。同时也熟练运用OpenGL基本的绘图函数。 三、实验结果 1-1. DDA算法画直线。 图1-1-1 ,显示每次DDA算法画线的坐标结果(如上)。

图1-1-2.显示DDA算法画圆过程及截图 1-2. 中点Bresenham算法画直线 1-2-1利用中点Bresenham算法画直线的各点坐标如上: 1-2-2.中点Bresenham画线算法画线过程截图

1-3. 利用改进的Bresenham画线算法来画图 1-3-1.利用改进的Bresenham算法来画图各点坐标如上: 1-3-2.利用改进的Bresenham算法画直线图形如上 1-4.利用Bresenham画圆算法来作图

机器人实验报告

智能机器人实验报告1 学院:化学与材料科学学院 学号: 2015100749 姓名:朱巧妤 评阅人:评阅时间:

实验1 电驱动与控制实验 (一)实验目的 熟悉和掌握机器人开发环境使用,超声传感器、碰撞传感器、温度传感器、颜色传感器等常见机器人传感器工作原理与使用方法,熟悉机器人平台使用与搭建;设计一个简单的机器人,并采用多种程序设计方法使它能动起来。 (二)仪器工具及材料 计算机、机器人实验系统、机器人软件开发平台、编程下载器等设备。 (三)内容及程序 实验内容: (1)碰撞传感器原理与应用; (2)颜色传感器原理与应用; (3)测距传感器原理与应用; (4)温度传感器原理与应用; (5)熟悉开发环境使用与操作;设计一个简单轮式移动机器人,并使用图形化编程方式实现对机器人的控制,通过该设计掌握机器人开发平台的结构设计、程序设计等基本方法。 实验步骤: 1)首先确定本次要做的机器人为货架物品颜色辨别的机器人。 2)根据模型将梁、轴、插销、螺丝等零件拼装成一个货架台 3)将货架台安装上可识别颜色的摄像头,并装在控制器上方,将两个摄像头的连接线分 别插入控制器的传感器接口,将显示器连接线插入传感器接口。 4)拼装完成后将控制器连接电脑,在电脑上运用Innobot软件对机器人进行颜色识别动 作的编程,拖动颜色传感器模块,对应选择数码管接口以及两个摄像头的接口,使机器人能将货架台上物品的颜色反应到数码管上。 5)将所编程序进行上传。测试看机器人是否能将颜色反映到显示器上完成所编动作。

(四)结果及分析 使用梁和轴以及螺钉拼装出货架台。 将拼装好的货架台装到传感器上。

DNS解析错误详解

DNS解析错误解决办法 在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS 解析出现故障造成的。这个现象发生的机率比较大,所以本文将从零起步教给各位读者一些基本的排除DNS解析错误的方法。 一、什么是DNS解错误? 一般来说像我们访问的https://www.360docs.net/doc/ab6324590.html,,这些地址都叫做域名,而众所周知网络中的任何一个主机都是IP地址来标识的,也就是说只有知道了这个站点的IP地址才能够成功实现访问操作。 不过由于IP地址信息不太好记忆,所以网络中出现了域名这个名字,在访问时我们这需要输入这个好记忆的域名即可,网络中会存在着自动将相应的域名解析成IP地址的服务器,这就是DNS服务器。能够实现DNS解析功能的机器可以是自己的计算机也可以是网络中的一台计算机,不过当DNS解析出现错误,例如把一个域名解析成一个错误的IP 地址,或者根本不知道某个域名对应的IP地址是什么时,

我们就无法通过域名访问相应的站点了,这就是DNS解析错误。 出现DNS解析错误最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。 二、如何解决DNS解析错误: 当我们的计算机出现了DNS解析错误后不要着急,解决的方法也很简单。 (1)用nslookup来判断是否真的是DNS解析错误: 要想百分之百判断是否为DNS解析错误就需要通过系统自带的NSLOOKUP来解决了。 第一步:确认自己的系统是windows 2000和windows xp 以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。 第二步:输入nslookup命令后回车,将进入DNS解析查询界面。

研究生计算机图形学课程室内场景OpenGL--实验报告Word版

《高级计算机图形学》实验报告 姓名:学号:班级: 【实验报告要求】 实验名称:高级计算机图形学室内场景 实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。 实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、 纹理映射技术以及实时绘制技术。 一、实验效果图 图1:正面效果图

图2:背面效果图 图4:背面效果图

图4:室内场景细节效果图 图5:场景角度转换效果图

二、源文件数据代码: 共6个文件,其实现代码如下: 1、DlgAbout.cpp #include "StdAfx.h" #include "DlgAbout.h" CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() 2、FormCommandView.cpp #include "stdafx.h" #include "Tool.h" #include "MainFrm.h" #include "FormCommandView.h" #include "ToolDoc.h" #include "RenderView.h" // Download by https://www.360docs.net/doc/ab6324590.html, #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // CFormCommandView IMPLEMENT_DYNCREATE(CFormCommandView, CFormView) CFormCommandView::CFormCommandView() : CFormView(CFormCommandView::IDD) { //{{AFX_DATA_INIT(CFormCommandView)

网页打不开 DNS解析故障轻松解决

大家都听过DNS吧,DNS是个很专业的名词,是因特网的一项核心服务,是域名系统的缩写,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。既然DNS的作用如此强大,你如果出现DNS解析错误,该怎么办呢?今天小编就给大家讲解这一问题,希望对经常从事该工作的朋友们有点帮助。 由于IP地址信息不太好记忆,所以网络中出现了域名这个名字,在访问时我们这需要输入这个好记忆的域名即可,网络中会存在着自动将相应的域名解析成IP地址的服务器,这就是DNS服务器。能够实现DNS解析功能的机器可以是自己的计算机也可以是网络中的一台计算机,不过当DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,我们就无法通过域名访问相应的站点了,这就是DNS解析故障。 出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。 当我们的计算机出现了DNS解析故障后不要着急,解决的方法也很简单。 (1)用nslookup来判断是否真的是DNS解析故障: 要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。 第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。 第二步:输入nslookup命令后回车,将进入DNS解析查询界面。 第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS 服务器IP为202.106.0.20。 第四步:接下来输入你无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds 的提示信息。这说明我们的计算机确实出现了DNS解析故障。 小提示:如果DNS解析正常的话,会反馈回正确的IP地址。

opengl机器人纹理

opengl 机器人纹理 #include <glut.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> static GLfloat xRot = 0.0f; static GLfloat yRot = 0.0f; //是否停止转动 bool IsStop=false; //光照使用光源 GLfloat lightPos[] = { 1.0f, 0.0f, -1.0f, 0.0f }; GLfloat specular[] = { 1.0f, 1.0f, 1.0f, -1.0f};//反射光 GLfloat specref[] = { 1.0f, 1.0f, 1.0f, 1.0f };//a GLfloat ambientLight[] = { 0.5f, 0.5f, 0.5f, 1.0f};//环绕光GLfloat spotDir[] = { 0.0f, 0.0f, -1.0f }; GLboolean bEdgeFlag = TRUE; void showText(void); void resetPerspectiveProjection() ; void setOrthographicProjection() ; void Something(); void renderBitmapString(float x, float y, void *font,char *string); //设置背景 void SetupRC(void) { glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); glLightfv(GL_LIGHT0,GL_DIFFUSE,ambientLight); glLightfv(GL_LIGHT0,GL_SPECULAR,specular); glLightfv(GL_LIGHT0,GL_POSITION,lightPos); glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,30.0f); glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,20.0f);

机器人实验报告

一、机器人的定义 美国机器人协会(RIA)的定义: 机器人是一种用于移动各种材料、零件、工具或专用的装置,通过可编程序动作来执行种种任务的、并具有编程能力的多功能机械手。 日本工业机器人协会(JIRA—Japanese Industrial Robot Association):一种带有存储器件和末端执行器的通用机械,它能够通过自动化的动作替代人类劳动。(An all—purpose machine equipped with a memory device and an end—effector,and capable of rotation and of replacing human labor by automatic performance of movements.) 世界标准化组织(ISO):机器人是一种能够通过编程和自动控制来执行诸如作业或移动等任务的机器。(A robot is a machine which can be programmed to perform some tasks which involve manipulative or locomotive actions under automatic control.) 中国(原机械工业部):工业机器人是一种能自动定位控制、可重复编程、多功能多自由度的操作机,它能搬运材料、零件或夹持工具,用以完成各种作业。 二、机器人定义的本质: 首先,机器人是机器而不是人,它是人类制造的替代人类从事某种作业的工具,它能是人的某些功能的延伸。在某些方面,机器人可具有超越人类的能力,但从本质上说机器人永远不可能全面超越人类。

DNS出错解决方法

如何解决DNS解析故障: 当我们的计算机出现了DNS解析故障后不要着急,解决的方法也很简单。 (1)用nslookup来判断是否真的是DNS解析故障: 要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。 第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始-》运行-》输入CMD”后回车进入命令行模式。 第二步:输入nslookup命令后回车,将进入DNS解析查询界面。 第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的Dns服务器IP为202.106.0.20。 第四步:接下来输入你无法访问的站点对应的域名。例如笔者输入https://www.360docs.net/doc/ab6324590.html,,假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明我们的计算机确实出现了DNS解析故障。 小提示:如果DNS解析正常的话,会反馈回正确的IP地址,例如笔者用https://www.360docs.net/doc/ab6324590.html,这个地址进行查询解析,会得到name:https://www.360docs.net/doc/ab6324590.html,,addresses:61.135.133.103,61.135.133.104的信息。 2)查询Dns服务器工作是否正常: 这时候我们就要看看自己计算机使用的DNS地址是多少了,并且查询他的运行情况。 第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始-》运行-》输入CMD”后回车进入命令行模式。 第二步:输入ipconfig /all命令来查询网络参数。 第三步:在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,我们可以更换一个其他的Dns服务器地址即可解决问题。 第四步:如果在DNS服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS 解析工作是交给公司内部的DNS服务器来完成的,这时我们需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决Dns服务器上的DNS服务故障,一般来说问题也能够解决。 (3)清除DNS缓存信息法: 当计算机对域名访问时并不是每次访问都需要向DNS服务器寻求帮助的,一般来说当解析工作完成一次后,该解析条目会保存在计算机的DNS缓存列表中,如果这时DNS解析出现更改变动的话,由于DNS缓存列表信息没有改变,在计算机对该域名访问时仍然不会连接Dns服务器获取最新解析信息,会根据自己计算机上保存的缓存对应关系来解析,这样就会出现DNS解析故障。这时我们应该通过清除DNS缓存的命令来解决故障。 第一步:通过“开始-》运行-》输入CMD”进入命令行模式。 第二步:在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。 第三步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。

Opengl实验报告及源代码实验七 模型加载

实验报告 学生姓名:学号:专业班级: 实验类型:□验证□综合□设计□创新实验日期:2018.11 实验成绩:一、实验名称 实验七模型加载 二、实验内容 1.设计并实现Mesh类,利用该类实现模型网格的解析、加载、管理与渲染。 2.设计并实现Model类,利用该类实现几何模型的解析、加载、管理与渲染。 3.基于Mesh类和Model类,利用Assimp模型加载库,加载并渲染三维几何模型。 三、实验目的 1.掌握3D模型网格数据的组织与渲染方法。 2.掌握3D模型数据的结构与组织,以及模型数据的解析与渲染方法。 3.了解Assimp库中管理3D模型的数据结构,掌握Assimp库的使用方法。 四、实验步骤 1.定义网格类结构,并初始化 class Mesh { Public: vector vertices; vector indices; vector textures; Mesh(vector vertices, vector indices, vector texture); Void Draw(Shader shader); private: GLuint VAO, VBO, EBO; void setupMesh(); } void setupMesh() { glGenVertexArrays(1, &this->VAO); glGenBuffers(1, &this->VBO); glGenBuffers(1, &this->EBO); glBindVertexArray(this->VAO); glBindBuffer(GL_ARRAY_BUFFER, this->VBO);

六轴工业机器人实验报告

六轴工业机器人模块 实验报告 姓名:张兆伟 班级:13 班 学号:30 日期:2016年8月25日

六轴工业机器人模块实验报告 一、实验背景 六自由度工业机器人具有高度的灵活性和通用性,用途十分广泛。本实验是在开放的六自由度机器人系统上,采用嵌入式多轴运动控制器作为控制系统平台,实现机器人的运动控制。通过示教程序完成机器人的系统标定。学习采用C++编程设计语言编写机器人的基本控制程序,学习实现六自由度机器人的运动控制的基本方法。了解六自由度机器人在机械制造自动化系统中的应用。 在当今高度竞争的全球市场,工业实体必须快速增长才能满足其市场需求。这意味着,制造企业所承受的压力日益增大,既要应付低成本国家的对手,还要面临发达国家的劲敌,二后者为增强竞争力,往往不惜重金改良制造技术,扩大生产能力。 机器人是开源节流的得利助手,能有效降低单位制造成本。只要给定输入成值,机器人就可确保生产工艺和产品质量的恒定一致,显著提高产量。自动化将人类从枯燥繁重的重复性劳动中解放出来,让人类的聪明才智和应变能力得以释放,从而生产更大的经济回报。 二、实验过程 1、程序点0——开始位置 把机器人移动到完全离开周边物体的位置,输入程序点 0。按下手持操作示教器上的【命令一览】键,这时在右侧弹出指令列表菜单如图:按手持操作示教器【下移】键,使{移动 1}变蓝后,按【右移】键,打开{移动 1}子列表,MOVJ 变蓝后,按下【选择】键,指令出现在命令编辑区。修改指令参数为需要的参数,设置速度,使用默认位置点 ID 为 1。(P1 必须提前示教好)。按下手持操作示教器上的【插入】键,这时插入绿色灯亮起。然后再按下【确认】键,指令插入程序文件记录列表中。此时列表内容显示为: MOVJ P=1 V=25 BL=0 (工作原点) 2、程序点1——抓取位置附近(抓取前) 位置点1必须选取机器人接近工件时不与工件发生干涉的方向、位置。(通常在抓取位置的正上方)按下手持操作示教器上的【命令一览】键按手持操作示教器【下移】键,使{移动 1}变蓝后,按【右移】键,打开{移动 1}子列表,MOVJ

DNS解析故障自动修复方案

360提供DNS解析故障自动修复方案 2014年01月21日21:23 新浪科技我有话说(8人参 与) 新浪科技讯 1月21日晚间消息,今日下午3点10分开始,国内通用顶级域的根服务器忽然出现异常,导致众多知名网站出现DNS 解析故障,用户无法正常访问。目前虽然国内访问根服务器已恢复,但由于DNS缓存问题,部分地区用户“断网”现象仍将持续数个小时。对此360安全卫士已提供自动化的DNS修复方案,用户可以点击“电脑救援”按钮查找使用。 DNS解析相当于互联网上的导航仪,能够把网站域名分配到对应的IP上。此次DNS故障爆发后,众多知名网站的域名均被劫持到一个错误的IP地址上,至少有2/3的国内网站受到影响。另据微博调查,事故发生期间,超过85%的网友出现网速变慢或打不开网站的情况。 有传言称,此次DNS故障会导致大量用户微博、网银等重要账号被盗。对此360网站安全专家赵武表示,各大知名网站被劫持到一个虚假的IP地址上,目前只会影响网站的正常访问和打开速度,暂时没有出现假冒官网的钓鱼盗号情况。 赵武认为,“全球共有13个根域名服务器,分布在美国、日本和欧洲,我国对根域名则没有掌控权。如果根域名出现问题,将影响

我们所有域名解析和网站访问,因此国内急需建立一套完善的DNS监控及灾备系统。” 尽管国内对根域名服务器的访问已恢复正常,但受到缓存影响,部分地区网民仍无法正常访问网站。对此,赵武建议相关网友把电脑“网络连接-属性-Internet协议版本4”的DNS服务器地址修改为:(电信)101.226.4.6 ,(联通)123.125.81.6,(移动)101.226.4.6,(铁通)101.226.4.6,或者设置为:“8.8.8.8”。 另据赵武介绍,如果用户不会手动设置DNS,也可以点击360安全卫士主界面的“电脑救援”,只要查找DNS关键词,即可一键自动修复,恢复网络的正常访问。(爱文)

《工业机器人》实验报告

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验一:工业机器人认识 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解6自由度工业机器人的机械结构,工作原理,性能指标、控制系统,并初步掌握操作。了解6自由度工业机器人在柔性制造系统中的作用。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述工业机器人的机械结构、工作原理及性能指标。 2、描述控制系统的组成及各部分的作用。

3、描述机器人的软件平台及记录自己在进行实际操作时的步骤及遇到的问题以及自己的想法。教师批阅:

北京理工大学珠海学院实验报告 实验课程:工业机器人实验名称:实验二:机器人坐标系的建立 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人建立坐标系的意义;了解机器人坐标系的类型;掌握用D-H方法建立机器人坐标系的方法与步骤。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人建立坐标系的意义以及机器人坐标系的类型。 2、深入研究机器人机械结构,建立6自由度关节型机器人杆件坐标系,绘制机器人杆件坐标系图。

教师批阅:

实验课程:工业机器人实验名称:实验三:机器人示教编程与再现控制 教师:时间:班级:姓名:学号: 一、实验目的与任务 了解机器人示教编程的工作原理,掌握6自由度工业机器人的示教编程与再现控制。 二、实验设备 FMS系统(含6-DOF工业机器人) 三、实验内容与步骤 1、描述机器人示教编程的原理。 2、详细叙述示教编程与再现的操作步骤,记录每一个程序点,并谈谈实验心得体会。教师批阅:

工业机器人实验分析报告-机械-示教-离线编程

工业机器人实验报告-机械-示教-离线编程

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

工业机器人实验报告 ——机器人示教与离线编程实验 班级:机械41 组别:第一组 组员:陈豪 2140101003 尹鑫鑫 2140101023 武文家 2140101020 指导老师:桂亮 西安交通大学 2017年 5 月 3 日

西安交通大学实验报告 第页(共页)课程:工业机器人实验日期:2017年 5月 3 日 专业班号机械41组别第一组交报告日期:年月日 姓名陈豪学号2140101003 报告退发:(订正、重做) 姓名尹鑫鑫学号2140101023 教师审批签字: 姓名武文家学号2140101020 实验一机器人示教实验 一、实验目的 1.了解机器人示教与再现的原理; 2.掌握机器人示教和再现过程的操作方法。 二、实验设备 1.模块化机器人一台; 2.模块化机器人控制柜一台。 三、实验原理 机器人的示教-再现过程是分为四个步骤:示教、记忆、再现、操作。 示教,就是操作者把规定的目标动作(包括每个运动部件,每个运动轴的动作)一步一步 的教给机器人。 记忆,即是机器人将操作者所示教的各个点的动作顺序信息、动作速度信息、位姿信息 等记录在存储器中。 再现,便是将示教信息再次浮现,即根据需要,将存储器所存储的信息读出,向执行机 构发出具体的指令。 操作,指机器人以再现信号作为输入指令,使执行机构重复示教过程规定的各种动作。 示教的方法有很多种,有主从式,编程式,示教盒式等多种。 四、实验步骤 1.接通控制柜电源,按下“启动”按钮; 2.启动计算机,运行机器人软件; 3.点击主界面“模块组合方式”按钮,按照实际情况选择已组合的模块设备,并点 击“确定”按钮; 4.点击主界面“机器人复位”按钮,机器人进行回零运动。观察机器人的运动,所 有模块全部运动完成后,机器人处于零点位置; 5.点击“示教”按钮,出现界面;

二维纹理映射

二维纹理映射 一、实验目的和要求 掌握纹理映射的基本原理,利用VC++ OpenGL实现纹理映射技术。 二、实验原理 纹理映射是真实感图形制作的一个重要部分,运用纹理映射可以方面地制作真实感图形,而不必花更多的时间去考虑物体的表面纹理。如一张木制桌子其表面的木纹是不规范的,看上去又是那么自然,如果在图形制作中不用纹理映射,那么只是这张桌面纹理的设计,就要花费很大精力,而且设计结果也未必能像现实中那么自然。如果运用纹理映射就非常方便,可以用扫描仪将这样的一张桌子扫成一个位图。然后的具体的操作中,只需把桌面形状用多边形画出来,把桌面纹理贴上去就可以了。 另外,纹理映射能够在多边形进行变换时仍保证纹理的图案与多边形保持一致性。例如,以透视投影方式观察墙面时,远端的砖会变小,而近处的砖就会大一些。 此外,纹理映射也可以用于其他方面。例如,使用一大片植被的图像映射到一些连续的多边形上,以模拟地貌,或者以大理石、木纹等自然物质的图像作为纹理映射到相应的多边形上,作为物体的真实表面。 在OpenGL中提供了一系列完整的纹理操作函数,用户可以用它们构造理想的物体表面,可以对光照物体进行处理,使其映射出所处环境的景象,可以用不同方式应用到曲面上,而且可以随几何物体的几何属性变换而变化,从而使制作的三维场景和三维物体更真实更自然。 在OpenGL中要实现纹理映射,需要经历创建纹理、指定纹理应用方式、启用纹理映射、使用纹理坐标和几何坐标绘制场景几个过程。 用于指定一维、二维和三维纹理的函数分别为: Void glTexImage1D(GLenum target, Glint level, Glint components, GLsizei width, Glint border, GLenum format, GLenum type, const GLvoid *texels); Void glTexImage2D(GLenum target, Glint level, Glint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *texels); Void glTexImage3D(GLenum target, Glint level, Glint components, GLsizei width, GLsizei height, GLsizei depth, Glint border, GLenum format, GLenum type, const GLvoid *texels); 其中,参数target取值一般为GL_TEXTURE_1D, GL_TEXTURE_2D和GL_TEXTURE_3D,分别与一维、二维和三维的纹理相对应。参数Level表示纹理多分辨率层数,通常取值为0,表示只有一种分辨率。参数components的可能取值为1~4的整数以及多种符号常量(如GL_RGBA),表示纹理元素中存储的哪些分量(RGBA颜色、深度等)在纹理映射中被使用,1表示使用R颜色分量,2表示使用R和A颜色分量,3表示使用RGB颜色分量,4表示使用RGBA颜色分量。参数width,height,depth分别指定纹理的宽度、高度、深度。参数format和type表示给出的图像数据的数据格式和数据类型,这两个参数的取值都是符号常量(比如format指定为GL_RGBA,type指定为GL_UNSIGNED_BYTE,参数texels指向内存中指定的纹理图像数据。 在定义了纹理之后,需要启用纹理的函数: glEnable(GL_TEXTURE_1D);

opengl立方体的简单三维交互式几何变换实验报告+代码

立方体的简单三维交互式几何变换 这个学期对opengl的学习,使我对计算机图形学的一些算法过程有了更多的了解。因为对三维图形的显示比较感兴趣,就做了立方体的简单三维交互式几何变换。 功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。 程序模块: 1.该模块为绘制一个立方体。 void DrawBox() { glBegin(GL_QUADS); //前面 glColor3f(1,0,0); glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的左下 glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的右下 glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右上 glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左上 // 后面 glColor3f(0,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右下 glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的右上

glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左下 // 顶面 glColor3f(0,0,1); glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上// 底面 glColor3f(1,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的右下// 右面 glColor3f(0,1,1); glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下// 左面 glColor3f(1,0,1);

X-opengl立方体的简单三维交互式几何变换实验报告代码

立方体的简单三维交互式几何变换 立方体的简单三维交互式几何变换。 功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。 程序模块: 1.重绘回调函数,在窗口首次创建或用户改变窗口尺寸时被调用。void reshape(int w, int h) { glViewport(0, 0, w, h);// 指定视口的位置和大小 glMatrixMode(GL_PROJECTION); glLoadIdentity(); //glFrustum(-1.0, 1.0, -1.0, 1.0, 3.1, 10.0); //gluPerspective(45,1,0.1,10.0); glOrtho(-2.0, 2.0, -2.0, 2.0, 2.0, 10.0); } 2.绘制一个立方体。 void DrawBox() { glBegin(GL_QUADS); //前面

glColor3f(1,0,0); glVertex3f(-1.0f, -1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左上// 后面 glColor3f(0,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右下glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左下 // 顶面 glColor3f(0,0,1); glVertex3f(-1.0f, 1.0f, -1.0f); // 四边形的左上glVertex3f(-1.0f, 1.0f, 1.0f); // 四边形的左下glVertex3f( 1.0f, 1.0f, 1.0f); // 四边形的右下glVertex3f( 1.0f, 1.0f, -1.0f); // 四边形的右上// 底面 glColor3f(1,1,0); glVertex3f(-1.0f, -1.0f, -1.0f); // 四边形的右上glVertex3f( 1.0f, -1.0f, -1.0f); // 四边形的左上glVertex3f( 1.0f, -1.0f, 1.0f); // 四边形的左下

如何解决DNS解析错误

如何解决DNS解析错误 1:更换本地DNS的方法 目前国内电信运营商通过使用DNS劫持的方法,干扰用户正常上网,使得用户无法访问,(例如弹出广告窗口),所以我一直在使用Google DNS,不仅可以解决中国的电信运营商的流氓行为,还可以解决域名无法访问的情况。 小技巧:点击开始->设置->网络连接->本地连接->属性->TCP/IP协议->使用下面的DNS服务器地址,在框中输入“8.8.8.8”和“8.8.4.4”断开,从新连接网络即可,并且没有电信、联通(原网通)等DNS劫持问题。 2:修改HOSTS文件的方法 如果我们希望把某个域名与某个IP绑定,就可以通过修改HOSTS文件的办法:“开始->搜索”,然后查找名叫hosts的文件。或路径为 c:\windows\system32\drivers\etc都可。用记事本打开,在下面加入要解析的IP 和域名即可。(修改HOSTS文件则是在实在没有办法的时候在用) 小知识:每个windows系统都有个HOSTS文件,它的作用是加快域名解析,方便局域网用户,屏蔽网站,顺利连接系统等功能。 3:清除DNS缓存信息的方法 “开始->运行->输入CMD”,在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令,执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被 成功清除。接下来所有的DNS缓存都会重新加载。 小知识:DNS解析就是把你的域名解析成一个ip地址,服务商提供的dns解析就是能够将你的域名解析成相应ip地址的主机。这就是DNS域名解析。 关于DNS域名解析就写到这里了,虽然问题还没有解决,但从中确实也了解了不少DNS的知识,特地分享出来,如果以后哪位遇到这样的问题(最好别遇到),能顺利解决是最好的了。

相关文档
最新文档