




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
合肥工业大学计算机图形学课程实验报告课程名称计算机图形学班级信息一班实验日期2011.12.22姓名陈育伟学号20096361实验成绩实验名称直线绘制和填充纹理实验目的及要求一、 应用VC6.0绘制直线二、 应用VC6.0及OpenGL进行纹理填充实验环境VC+6.0,OpenGL实验内容计算机图形学的算法,并用语言编写绘图程序。主要内容包括线段、园、区域填充、线型线宽、字符、裁剪、等基本图形生成算法;样条、Bezier、等常用曲线的生成算法;Coons曲面、Bezier曲面、B样条曲面等常用曲面的生成算法。 Bresenham画法与中点法相似,都是通过每列象素中确定与理想直线最近的像素来进行直线的扫描的转换的。通过各行、各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的像素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只需要检查一个误差项的符号,就可以确定该列的所有对象。从根本上说,纹理是物体表面的细小结构,它可以是光滑表面的花纹、图案,是颜色纹理,这时的纹理一般都是二维图象纹理,当然它也有三维纹理,我们将在下面的小节中分别介绍它们的映射方法;纹理还可以是粗糙的表面(如桔子表面的皱纹),它们被称为几何纹理,是基于物体表面的微观几何形状的表面纹理,一种最常用的几何纹理就是对物体表面的法向进行微小的扰动来表现物体表面的细节。算法描述及实验步骤一、Bresenham直线算法1、画点(x1,y1),dx=x(2)-x(1),dy=y(2)-y(1),计算误差初值P(1)=2dy-dx,i=1.2、求直线的下一点位置x(i+1)=x(i)+1,如果P(i)0,则y(i+1)=y(i)+1,否则y(i+1)=y(i).3、画点(x(i+1),y(i+1)).4、求下一个误差P(i+1),如果P(i)0,则P(i+1)=P(i)+2dy-2dx,否则P(i+1)=P(i)+2dy.5、I=i+1;如果idx+1则转2;否则结束操作。 二、图象纹理:将二维纹理图案映射到三维物体表面,绘制物体表面上一点时,采用相应的纹理图案中相应点的颜色值。函数纹理:用数学函数定义简单的二维纹理图案,如方格地毯。或用数学函数定义随机高度场,生成表面粗糙纹理即几何纹理。调试过程及实验结果一、绘制直线单击直线选项,在下拉菜单中分别有DDA算法生成直线,Bresenham算法生成直线,中点算法生成直线。 程序运行效果如图所示: 选择相关选项后,可以得到不同算法生成的直线效果图。二、纹理填充总结在该课设过程中遇到了诸多问题,一个错误导致整个程序的无法运行,严重滞后了程序开发的进度,为此,我将问题简化,将一个大的系统分成几个小模块进行,如此一来,某个模块无法运行不会影响到其他模块的调试,较好的帮助了排错过程。此外,尽管对于图形学的相关算法设计比较了解,但因为具体实现过程中,相关的代码的设计错误,以及对MFC不够了解,导致开发进度缓慢。对该问题,我一方面对代码的构建更加仔细,另一方面积极利用身边的资源进行疑难解答。最后终于排除了种种困难,基本实现了课设的要求。同时,我也应当看到此次课程设计的一些不足,例如三大模块最后并没有整合在一起,对于直线起点终点,圆的中点等信息无法由外界定义,这些问题,假以时日,定能得到改进。通过此次课程设计,我的实际操作能力不仅得到了提高,也为我进一步深入图形学奠定了坚实的基础。附录一、 直线绘制DDA算法:void C基本图形的生成View:OnDdaline()CDC*pDC = GetDC();int xa=100,ya=300,xb=300,yb=200,c=RGB(255,0,0);int x,y;float dx,dy,k;dx=(float)(xb-xa),dy=(float)(yb-ya);k=dy/dx,y=ya;if(abs(k)1)for(x=xa;xSetPixel (x,int(y+0.5),c);y=y+k;if (abs(k)=1)for(y=ya;ySetPixel (int(x+0.5),y,c);x=x+1/k;ReleaseDC(pDC);Bresenham算法:void C基本图形的生成View:OnBresenhamline()CDC*pDC = GetDC();int x1=100,y1=200,x2=350,y2=100,c=RGB(0,0,255);int i,s1,s2,interchange,f;float x,y,deltax,deltay,e,temp;x=x1;y=y1;deltax=abs(x2-x1);deltay=abs(y2-y1);if(x2-x1=0) s1=1;else s1=-1;if(y2-y1=0) s2=1;else s2=-1;if(deltaydeltax)temp=deltax;deltax=deltay;deltay=temp;interchange=-1;else interchange=0;f=2*deltay-deltax;pDC-SetPixel (x,y,c);for(i=1;i=0)if (interchange=1) x+=s1;else y+=s2;pDC-SetPixel (x,y,c);f=f-2*deltax;elseif (interchange=1) y+=s2;else x+=s1;f=f+2*deltay;中点算法:void C基本图形的生成View:OnMidpointline()CDC*pDC=GetDC();int xa=300,ya=200,xb=450,yb=300,c=RGB(0,255,0);float a,b,d1,d2,d,x,y;a=ya-yb,b=xb-xa,d=2*a+b;d1=2*a,d2=2*(a+b);x=xa,y=ya;pDC-SetPixel (x,y,c);while(xxb)if(dSetPixel (x,y,c);ReleaseDC(pDC);二、 纹理填充#include #include #include #include #include #include HDChDC=NULL;HGLRChRC=NULL;HWNDhWnd=NULL;HINSTANCEhInstance;boolkeys256;boolactive=TRUE;boolfullscreen=TRUE;bool pt=true;bool fc=true;float x=0.0,y=0.0;float xrot,yrot,zrot;GLuint texture1;int n=0;float vux=0.0f;float vuy=1.0f;float vuz=0.0f;float vlbx=-1.0f;float vlby=-1.0f;float vlbz=1.0f;float vrbx=1.0f;float vrby=-1.0f;float vrbz=1.0f;float vdx=0.0f;float vdy=-1.0f;float vdz=-1.0f;LRESULTCALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);AUX_RGBImageRec *LoadBMP(char* Filename)FILE* File=NULL;if(!Filename)return NULL;File=fopen(Filename,r);if(File)fclose(File);return auxDIBImageLoad(Filename);return NULL;int LoadGLTextures()int status=false;AUX_RGBImageRec *TextureImage1;memset(TextureImage,0,sizeof(void*)*1);if(TextureImage0=LoadBMP(sand.bmp)status=true;glGenTextures(1,&texture0);glBindTexture(GL_TEXTURE_2D,texture0);glTexImage2D(GL_TEXTURE_2D,0,3,TextureImage0-sizeX,TextureImage0-sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,TextureImage0-data);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);if(TextureImage0)if(TextureImage0-data)free(TextureImage0-data);free(TextureImage0);return status;GLvoid ReSizeGLScene(GLsizei width, GLsizei height)if (height=0)height=1;glViewport(0,0,width,height);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();void DrawLine()int x1=0,y1=0;int x2=0,y2=-10; int dx = x2 - x1, dy = y2 - y1,y=y1, eps = 0;int stepx,stepy;stepx = x2x1?1:-1;stepy = y2y1?1:-1;glPointSize(3.0);glColor3f(1.0f,0.0f,0.0f);x = x1;y = y1;if (abs(dy)=abs(dx)for ( int x = x1; x != x2; x+=stepx ) glBegin(GL_POINTS); glVertex3f(float)x,(float)y,-30.0f);glEnd();eps += dy; if ( abs(eps = abs(dx) )y+=stepy;eps -= dx; elsefor ( int y = y1; y != y2; y+=stepy ) glBegin(GL_POINTS); glVertex3f(float)x,(float)y,-30.0f);glEnd();eps += dx; if ( abs(eps = abs(dy) )x+=stepx;eps -= dy; pt=false;void FractalTri(float ux,float uy,float uz,float lbx,float lby,float lbz,float rbx,float rby,float rbz,float dx,float dy,float dz,int n)if(n=5)return;if (n4)glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);elseglPolygonMode(GL_FRONT_AND_BACK,GL_FILL);glBegin(GL_TRIANGLES); glVertex3f(ux,uy,uz);glVertex3f(lbx,lby,lbz);glVertex3f(rbx,rby,rbz);glVertex3f(ux,uy,uz);glVertex3f(rbx,rby,rbz);glVertex3f(dx,dy,dz);glVertex3f(ux,uy,uz);glVertex3f(dx,dy,dz);glVertex3f(lbx,lby,lbz);glVertex3f(lbx,lby,lbz);glVertex3f(rbx,rby,rbz);glVertex3f(dx,dy,dz);glEnd();FractalTri(ux,uy,uz,(ux+lbx)/2.0f,(uy+lby)/2.0f,(uz+lbz)/2.0f,(ux+rbx)/2.0f,(uy+rby)/2.0f,(uz+rbz)/2.0f,(ux+dx)/2.0f,(uy+dy)/2.0f,(uz+dz)/2.0f,n+1);FractalTri(ux+lbx)/2.0f,(uy+lby)/2.0f,(uz+lbz)/2.0f,lbx,lby,lbz,(lbx+rbx)/2.0f,(lby+rby)/2.0f,(lbz+rbz)/2.0f,(lbx+dx)/2.0f,(lby+dy)/2.0f,(lbz+dz)/2.0f,n+1);FractalTri(ux+rbx)/2.0f,(uy+rby)/2.0f,(uz+rbz)/2.0f,(lbx+rbx)/2.0f,(lby+rby)/2.0f,(lbz+rbz)/2.0f,rbx,rby,rbz,(dx+rbx)/2.0f,(dy+rby)/2.0f,(dz+rbz)/2.0f,n+1);FractalTri(ux+dx)/2.0f,(uy+dy)/2.0f,(uz+dz)/2.0f,(lbx+dx)/2.0f,(lby+dy)/2.0f,(lbz+dz)/2.0f,(dx+rbx)/2.0f,(dy+rby)/2.0f,(dz+rbz)/2.0f,dx,dy,dz,n+1);void DrawCircle(int r)int x = 0;int y = r; int p = 1 - r;glBegin(GL_POINTS); glColor3f(1.0f,0.0f,0.0f);glVertex3f(0,r,0.0f);glVertex3f(r,0,0.0f);glVertex3f(0,-r,0.0f);glVertex3f(-r,0,0.0f);glEnd();while (x y) if(fc=true) printf(%d,%d,n,x,y); x+;if (p 0) p += 2*x+1; else y-; p += 2*(x-y+1);glBegin(GL_POINTS); glColor3f(1.0f,0.0f,0.0f);glVertex3f(float)x,(float)y,0.0f);glVertex3f(float)x,(float)-y,0.0f);glVertex3f(float)-x,(float)y,0.0f);glVertex3f(float)-x,(float)-y,0.0f);glVertex3f(float)y,(float)x,0.0f);glVertex3f(float)y,(float)-x,0.0f);glVertex3f(float)-y,(float)x,0.0f);glVertex3f(float)-y,(float)-x,0.0f);glEnd(); fc=false;void Hermit(int x0,int y0,int x1,int y1,float t1,float t2,int steps)for(int i=0;isteps;i+)float s=(float)i/(float)steps;float h1=2*s*s*s-3*s*s+1;float h2=-2*s*s*s+3*s*s;float h3=s*s*s-2*s*s+s;float h4=s*s*s-s*s;float x=x0*h1+x1*h2+t1*h3+t2*h4;float y=y0*h1+y1*h2+t1*h3+t2*h4;glBegin(GL_POINTS); glColor3f(1.0f,0.0f,0.0f);glVertex3f(x,y,0.0f);glEnd(); if(pt=true) printf(%f,%f,n,x,y); pt=false;void Bezier(int x0,int y0,int x1,int y1,int x2,int y2,int x3,int y3, int steps)float *p=new float 2*steps;glBegin(GL_LINE_STRIP);glColor3f(1.0f,1.0f,1.0f);glVertex3f(float)x0,(float)y0,0.0f);glVertex3f(float)x1,(float)y1,0.0f);glVertex3f(float)x2,(float)y2,0.0f);glVertex3f(float)x3,(float)y3,0.0f);glEnd();glBegin(GL_LINE_STRIP); for(int i=0;isteps;i+)float t=(float)i/(float)steps;float b1=-t*t*t+3*t*t-3*t+1;float b2=3*t*t*t-6*t*t+3*t;float b3=-3*t*t*t+3*t*t;float b4=t*t*t;float x=x0*b1+x1*b2+x2*b3+x3*b4;float y=y0*b1+y1*b2+y2*b3+y3*b4;p2*i=x;p2*i+1=y;glColor3f(1.0f,0.0f,0.0f);glVertex3f(x,y,0.0f); if(pt=true) printf(%f,%f,n,x,y); glEnd();for(i=0;isteps;i+)glPointSize(10);glBegin(GL_POINTS);glColor3f(1.0f,0.0f,0.0f);glVertex3f(p2*i,p2*i+1,0.0f);glEnd();deletep;pt=false; void CubicWithTexture()glTranslatef(0.0f,0.0f,-5.0f);glRotatef(xrot,1.0f,0.0f,0.0f);glRotatef(yrot,0.0f,1.0f,0.0f);glRotatef(zrot,0.0f,0.0f,1.0f);glBegin(GL_QUADS);/ Front FaceglTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,1.0f); / Bottom Left Of The Texture and QuadglTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,1.0f); / Bottom Right Of The Texture and QuadglTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,1.0f,1.0f);/ Top Right Of The Texture and QuadglTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,1.0f,1.0f);/ Top Left Of The Texture and QuadglEnd();xrot+=0.3f;yrot+=0.2f;zrot+=0.2f;int InitGL(GLvoid)/ All Setup For OpenGL Goes Hereif(!LoadGLTextures()return false;glEnable(GL_TEXTURE_2D);glShadeModel(GL_SMOOTH);/ Enable Smooth ShadingglClearColor(0.0f, 0.0f, 0.0f, 0.5f);/ Black BackgroundglClearDepth(1.0f);/ Depth Buffer SetupglEnable(GL_DEPTH_TEST);/ Enables Depth TestingglDepthFunc(GL_LEQUAL);/ The Type Of Depth Testing To DoglHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);/ Really Nice Perspective CalculationsglEnable(GL_POINT_SMOOTH);AllocConsole();freopen(CONOUT$, w, stdout);return TRUE;/ Initialization Went OKint DrawGLScene(GLvoid)/ Heres Where We Do All The DrawingglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/ Clear Screen And Depth BufferglLoadIdentity();/ Reset The Current Modelview MatrixglTranslatef(0.0f,0.0f,-6.0f);glRotatef(yrot,0.0f,1.0f,0.0f);glBegin(GL_QUADS);glTexCoord2f(0.0f,0.0f);glVertex3f(-1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(1.0f,1.0f,0.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(-1.0f,1.0f,0.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(1.0f,-1.0f,2.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(1.0f,1.0f,2.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(1.0f,1.0f,0.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(1.0f,-1.0f,2.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(-1.0f,-1.0f,2.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(-1.0f,1.0f,2.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(1.0f,1.0f,2.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-1.0f,-1.0f,2.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(-1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(-1.0f,1.0f,0.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(-1.0f,1.0f,2.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-1.0f,1.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(1.0f,1.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(1.0f,1.0f,2.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(-1.0f,1.0f,2.0f);glTexCoord2f(0.0f,0.0f);glVertex3f(-1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(1.0f,-1.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(1.0f,-1.0f,2.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(-1.0f,-1.0f,2.0f); glEnd();/glTranslatef(0.0f,0.0f,-2.0f);/FractalTri(vux,vuy,vuz,vlbx,vlby,vlbz,vrbx,vrby,vrbz,vdx,vdy,vdz,1); yrot+=0.1f;return TRUE; / Everything Went OKGLvoid KillGLWindow(GLvoid)/ Properly Kill The Windowif (fullscreen)/ Are We In Fullscreen Mode?ChangeDisplaySettings(NULL,0);/ If So Switch Back To The DesktopShowCursor(TRUE);/ Show Mouse Pointerif (hRC)/ Do We Have A Rendering Context?if (!wglMakeCurrent(NULL,NULL)/ Are We Able To Release The DC And RC Contexts?MessageBox(NULL,Release Of DC And RC Failed.,SHUTDOWN ERROR,MB_OK | MB_ICONINFORMATION);if (!wglDeleteContext(hRC)/ Are We Able To Delete The RC?MessageBox(NULL,Release Rendering Context Failed.,SHUTDOWN ERROR,MB_OK | MB_ICONINFORMATION);hRC=NULL;/ Set RC To NULLif (hDC & !ReleaseDC(hWnd,hDC)/ Are We Able To Release The DCMessageBox(NULL,Release Device Context Failed.,SHUTDOWN ERROR,MB_OK | MB_ICONINFORMATION);hDC=NULL;/ Set DC To NULLif (hWnd & !DestroyWindow(hWnd)/ Are We Able To Destroy The Window?MessageBox(NULL,Could Not Release hWnd.,SHUTDOWN ERROR,MB_OK | MB_ICONINFORMATION);hWnd=NULL;/ Set hWnd To NULLif (!UnregisterClass(OpenGL,hInstance)/ Are We Able To Unregister ClassMessageBox(NULL,Could Not Unregister Class.,SHUTDOWN ERROR,MB_OK | MB_ICONINFORMATION);hInstance=NULL;/ Set hInstance To NULL/*This Code Creates Our OpenGL Window. Parameters Are:* *title- Title To Appear At The Top Of The Window* *width- Width Of The GL Window Or Fullscreen Mode* *height- Height Of The GL Window Or Fullscreen Mode* *bits- Number Of Bits To Use For Color (8/16/24/32)* *fullscreenflag- Use Fullscreen Mode (TRUE) Or Windowed Mode (FALSE)*/ BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)GLuintPixelFormat;/ Holds The Results After Searching For A MatchWNDCLASSwc;/ Windows Class StructureDWORDdwExStyle;/ Window Extended StyleDWORDdwStyle;/ Window StyleRECTWindowRect;/ Grabs Rectangle Upper Left / Lower Right ValuesWindowRect.left=(long)0;/ Set Left Value To 0WindowRect.right=(long)width;/ Set Right Value To Requested WidthWindowRect.top=(long)0;/ Set Top Value To 0WindowRect.bottom=(long)height;/ Set Bottom Value To Requested Heightfullscreen=fullscreenflag;/ Set The Global Fullscreen FlaghInstance= GetModuleHandle(NULL);/ Grab An Instance For Our Windowwc.style= CS_HREDRAW | CS_VREDRAW | CS_OWNDC;/ Redraw On Size, And Own DC For Window.wc.lpfnWndProc= (WNDPROC) WndProc;/ WndProc Handles Messageswc.cbClsExtra= 0;/ No Extra Window Datawc.cbWndExtra= 0;/ No Extra Window Datawc.hInstance= hInstance;/ Set The Instancewc.hIcon= LoadIcon(NULL, IDI_WINLOGO);/ Load The Default Iconwc.hCursor= LoadCursor(NULL, IDC_ARROW);/ Load The Arrow Pointerwc.hbrBackground= NULL;/ No Background Required For GLwc.lpszMenuName= NULL;/ We Dont Want A Menuwc.lpszClassName= OpenGL;/ Set The Class Nameif (!RegisterClass(&wc)/ Attempt To Register The Window ClassMessageBox(NULL,Failed To Register The Window Class.,ERROR,MB_OK|MB_ICONEXCLAMATION);return FALSE;/ Return FALSEif (fullscreen)/ Attempt Fullscreen Mode?DEVMODE dmScreenSettings;/ Device Modememset(&dmScreenSettings,0,sizeof(dmScreenSettings);/ Makes Sure Memorys CleareddmScreenSettings.dmSize=sizeof(dmScreenSettings);/ Size Of The Devmode StructuredmScreenSettings.dmPelsWidth= width;/ Selected Screen WidthdmScreenSettings.dmPelsHeight= height;/ Selected Screen HeightdmScreenSettings.dmBitsPerPel= bits;/ Selected Bits Per PixeldmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;/ Try To Set Selected Mode And Get Results. NOTE: CDS_FULLSCREEN Gets Rid Of Start Bar.if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)/ If The Mode Fails, Offer Two Options. Quit Or Use Windowed Mode.if (MessageBox(NULL,The Requested Fullscreen Mode Is Not Supported BynYour Video Card. Use Windowed Mode Instead?,NeHe GL,MB_YESNO|MB_ICONEXCLAMATION)=IDYES)fullscreen=FALSE;/ Windowed Mode Selected. Fullscreen = FALSEelse/ Pop Up A Message Box Letting User Know The Program Is Closing.MessageBox(NULL,Program Will Now Close.,ERROR,MB_OK|MB_ICONSTOP);return FALSE;/ Return FALSEif (fullscreen)/ Are We Still In Fullscreen Mode?dwExStyle=WS_EX_APPWINDOW;/ Window Extended StyledwStyle=WS_POPUP;/ Windows StyleShowCursor(FALSE);/ Hide Mouse PointerelsedwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;/ Window Extended Styledw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老外做中国的数学试卷
- 物流园组织管理方案
- 化妆品备案入门知识培训
- 数据标注工程语言知识与应用于东课后答案
- 机床刀具基本知识培训课件
- 娄山中学一模数学试卷
- 2025年小学考试笔试题目及答案
- 叶酸培训掌握知识课件
- 养猪场精准育种与养殖管理
- 2025年小学生足球试题及答案
- 混凝土养护方案
- 高质量SCI论文入门必备从选题到发表全套课件
- 长螺旋钻孔咬合桩基坑支护施工工法
- 库欣综合征英文教学课件cushingsyndrome
- 220kv升压站质量评估报告
- C语言程序设计(第三版)全套教学课件
- 未来医美的必然趋势课件
- 附件1发电设备备品备件验收及仓储保养技术标准
- 12、信息通信一体化调度运行支撑平台(SG-I6000)第3-8部分:基础平台-系统安全防护
- 大连市劳动用工备案流程
- 市环境监测站权力运行内部流程图
评论
0/150
提交评论