计算机图形学之机器人

效果图如下

话不多说,
代码附上,
仅供参考

#include"stdafx.h"
#include <gl/glut.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159
static int shoulder1 = 0;
static int shoulder2 = 0;
static int hand=0;
static int turn1=0;
static int tag=0;
int inner=10,outer=80;
int d1=0.5,d2=0.5;//手中物品大小
static int turn=0 ;//转弯
static float forward=0;//前进
static float elbow = 0 ,z=0;
int w;
int h;
float x2=0;//视线
float y2=0;//视线
float z2=10;//视线
float atx=0,aty=0,atz=0;  //at point initial position
float angle=0; //for angle between view-line and z axis
float r=170; //for distance between eye and at
float step=r/10;  //for forward and backword step;GLfloat vertices[][3]={{1.0,-1.0,0},{1.0,1.0,0},{-1.0,1.0,0},{-1.0,-1.0,0}};
GLfloat colors[][3]={{1.0,0.0,0.0},{0.0,1.0,1.0},{1.0,1.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,0.0,1.0},{0.0,1.0,1.0},{1.0,1.0,1.0}};int font=(int)GLUT_BITMAP_8_BY_13;
char s[30];
int frame,timeOwn,timebase=0;static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
static GLfloat zRot = 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[] =  { 0.75f, 0.75f, 0.75f, 1.0f };//模拟太阳光照射形成光照效果
GLfloat  ambientLight[] = { 1.0f, 0.7f, 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);//指定聚焦光源指数。
glEnable(GL_LIGHT0);//开启GL_LIGHT0光源
glEnable(GL_COLOR_MATERIAL);//启用函数
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);//可以用颜色来贴物体。如果没有这行代码,纹理将始终保持原来的颜色,glMaterialfv(GL_FRONT, GL_SPECULAR,specref); // 设置多边形正面的镜面反射属性
glMateriali(GL_FRONT, GL_SHININESS,8);// 指定镜面指数
glClearColor(0, 0, 0, 1 );//设置背景色
}  void display(void)
{  glClear(GL_COLOR_BUFFER_BIT);//把窗口清除为当前颜色glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glLoadIdentity();//重置当前指定的矩阵为单位矩阵gluLookAt(x2,y2,z2,0,0,0,0,1,z2-10);//定义一个视图矩阵,并与当前矩阵相乘glShadeModel(GL_SMOOTH);//控制opengl中绘制指定两点间其他点颜色的过渡模式//定义机器人开始旋转if (IsStop==false){turn = (turn - 5) % 360; if (forward<2){turn1=turn;  forward = forward -0.04*sin((GLfloat)turn1/360*3.14*2);  z=z-0.05*cos((GLfloat)turn1/360*3.14*2);  if(tag==0){  shoulder1 = (shoulder1 + 1);  shoulder2 = (shoulder2 - 1);  if(shoulder1>=0){elbow=elbow-1.2;}  else{elbow=elbow+1.2;}  }  else  {  shoulder1 = (shoulder1 - 1);  shoulder2 = (shoulder2 + 1);  if(shoulder1>=0){elbow=elbow+1.25;}  else{elbow=elbow-1.2;}  }  if(shoulder1>30) {tag=1;}  if(shoulder1<-30){tag=0;}  }else {turn1=turn;  forward = forward +0.04*sin((GLfloat)turn1/360*3.14*2);  z=z+0.05*cos((GLfloat)turn1/360*3.14*2); if(tag==0){  shoulder1 = (shoulder1 - 1);  shoulder2 = (shoulder2 + 1);  }  else  {  shoulder1 = (shoulder1 + 1);  shoulder2 = (shoulder2 - 1);  }  if(shoulder1>30){  tag=0;  }  if(shoulder1<-30){  tag=1; }  }}//背景变色网格图绘制 glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);for (int i=-8;i<8;i=i+1.0) {glPushMatrix(); glBegin(GL_LINE_STRIP);glColor3ub(255,0,0);glVertex3f(8.0f, i, 12.0f);glColor3ub(0,(i+8)*17,-(i+8)*17);glVertex3f(8.0f, i, -8.0f);glColor3ub(255,(i+8)*17,0);glVertex3f(-8.0f, i, -8.0f);glColor3ub(0,0,255);glVertex3f(-8.0f, i, 12.0f);glEnd();glPopMatrix();} for (int i=-8;i<8;i=i+1.0) {
glPushMatrix();  glBegin(GL_LINE_STRIP);glColor3ub(100,10*i,100);glVertex3f(i,8.0f,12.0f);glColor3ub(255-(i+8)*17,255,0);glVertex3f( i,8.0f, -8.0f);glColor3ub(255-(i+8)*17,0,(i+8)*17);glVertex3f(i,-8.0f,  -8.0f);glColor3ub(123,15*i,i);glVertex3f( i,-8.0f, 12.0f);glEnd();
glPopMatrix();
}
//变色圆环for(int i=20;i<100;i=i+2){glPushMatrix();  glTranslatef(0.0,0.0,-i); glRotatef ((GLfloat) shoulder2, 1.0, 0.0, 1.0); glColor3ub((i-10)*2.83,(GLfloat) shoulder2*10,255-(i-10)*2.83);glutWireTorus(0.1,(50+i)/10,50,50);glPopMatrix();   }
//变色正方形for(int i=11;i<100;i++){
glPushMatrix();  glTranslatef(0.0,0.0,i); glRotatef ((GLfloat) shoulder2, 0, 0.0, 1.0); glBegin(GL_POLYGON);glColor3fv(colors[0]);   glVertex3fv(vertices[0]);glColor3fv(colors[1]);     glVertex3fv(vertices[1]);glColor3fv(colors[2]);     glVertex3fv(vertices[2]);glColor3fv(colors[3]);     glVertex3fv(vertices[3]);glEnd();
glPopMatrix();   }glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);//机器人运动glPushMatrix();  glTranslatef (forward,0.0,z); //前进  glRotatef ((GLfloat) turn, 0.0, 1.0, 0.0); Something();glTranslatef (0.375,0.0, 0.0);//提起右大腿glRotatef ((GLfloat) shoulder2, 1.0, 0.0, 0.0); glTranslatef (0,0.0, 0.0);//提起左大腿glRotatef ((GLfloat) shoulder2, 1.0, 0.0, 0.0); glPushMatrix();glRotatef(yRot, 0.0f, 1.0f, 0.0f);glRotatef(xRot, 1.0f, 0.0f, 0.0f);glLightfv(GL_LIGHT0,GL_POSITION,lightPos);glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,spotDir);//画一个光源glTranslatef(lightPos[0],lightPos[1],lightPos[2]);glTranslatef(0,4,0);glPushAttrib(GL_LIGHTING_BIT);//glDisable(GL_LIGHTING);glColor3ub(255-yRot/360*255,xRot/360*255,xRot/360*255);glutWireSphere(xRot/30,30,30);glPopAttrib();glPopMatrix();glTranslatef (0.0, -0.5, 0.0);   glColor3f(0.8,1.0,0.2);   glPushMatrix();glScalef (0.5, 1.0, 0.5);glutSolidCube(1.0);  glPopMatrix();   glTranslatef (0.0, -0.5, 0.0);//提起右小腿   glRotatef ((GLfloat) elbow, 1.0, 0.0, 0.0);  glTranslatef (0.0, -0.5, 0.0);  glColor3f(0.5,0.1,0.8);        glPushMatrix();  glScalef (0.5, 1.0, 0.5);  glutSolidCube(1.0);  glPopMatrix();   glTranslatef (0.0, -0.5, -0.1);//右脚   glColor3f(0.5,0.2,1.0);     glPushMatrix();  glScalef (0.5, 0.1, 0.7);  glutSolidCube(1.0);  glPopMatrix();   glPopMatrix ();   glPushMatrix();  glTranslatef (forward,0.0,z);   glRotatef ((GLfloat) turn, 0.0, 1.0, 0.0);   glTranslatef (-0.375, 0.0, 0.0);//左大腿   glRotatef ((GLfloat) shoulder1, 1.0, 0.0, 0.0);  glTranslatef (0.0, -0.5, 0.0);   glColor3f(0.8,1.0,0.2);   glPushMatrix();  glScalef (0.5, 1.0, 0.5);  glutSolidCube(1.0);  glPopMatrix();   glTranslatef (0.0, -0.5, 0.0);//左小腿   glRotatef ((GLfloat) elbow, 1.0, 0.0, 0.0);  glTranslatef (0.0, -0.5, 0.0);  glColor3f(0.5,0.1,0.8);   glPushMatrix();  glScalef (0.5, 1.0, 0.5);//缩放四方体glutSolidCube(1.0);//画四方体  glPopMatrix();   glTranslatef (0.0, -0.5, -0.1);//左脚   glColor3f(0.5,0.2,1.0);   glPushMatrix();  glScalef (0.5, 0.1, 0.7);  glutSolidCube(1.0);  glPopMatrix();   glPopMatrix();   glPushMatrix();   glTranslatef (forward,0.0,z);   glRotatef ((GLfloat) turn, 0.0, 1.0, 0.0);  glTranslatef (0.0, 1.0,  0.0);//躯干   glColor3f(0.5,0.5,1.0);   glPushMatrix();  glScalef (1.4, 2.0, 0.5);  glutSolidCube(1.0);  glPopMatrix();   glTranslatef (0.0, 1.25, 0.0);//头   glColor3f(0,1,0);   glPushMatrix();  glScalef (0.5, 0.5, 0.5);  glutSolidCube(1.5);  glPopMatrix();  glTranslatef (0.2, 0.2, 0);//眼睛 glColor3f(0,0,0);   glPushMatrix();  glScalef (0.5, 0.5, 0.5);  glutSolidSphere(0.2,20,20);  glPopMatrix();  glTranslatef (-0.4,0,0);//眼睛 glColor3f(0,0,0);   glPushMatrix();  glScalef (0.5, 0.5, 0.5);  glutSolidSphere(0.2,20,20);  glPopMatrix();  glTranslatef (0.2,-0.3,0);//嘴glColor3f(1,0,0);   glPushMatrix();  //  glRotatef ((GLfloat) turn, 1.0, 0, 0);glScalef (0.8, 0.5, 0.5);  glutWireTorus(0.1f,0.2f,50,50);glPopMatrix();  glTranslatef (0,0.6,0);//帽子glRotatef (-90, 1.0, 0, 0); glPushMatrix();  glScalef (0.5, 0.5, 0.5);  glColor3f(1,1,0); glutWireCone(1.5f,5.0f,15,15);glColor3f(1,1,0); glutWireTorus(0.5f,1.8,15,15);glTranslatef (0,0,5);glColor3f(1,1,0);glutSolidSphere(0.5,5,5);glTranslatef (2,0,-5);glColor3f(0,1,1); glutWireCone(0.5,2,5,5);glTranslatef (-4,0,0);glColor3f(0,1,1); glutWireCone(0.5,2,5,5);glPopMatrix();  glPopMatrix();   glPushMatrix();   glTranslatef (forward,0.0,z);   glRotatef ((GLfloat) turn, 0.0, 1.0, 0.0);  glTranslatef (0.85, 1.75, 0.0);//右臂   glRotatef ((GLfloat) shoulder1, 1.0, 0.0, 0.0);  glTranslatef (0.0, -0.5, 0.0);  glColor3f(1.0,0.0,1.0);      glPushMatrix();  glScalef (0.3, 1.3, 0.4);  glutSolidCube(1.0); glPushMatrix();glTranslatef (0, -0.8,0); glScalef (2,d1,d2);glColor3f(1-(d1+d2)/20,d1/20,d2/20);    glutWireSphere(0.3,21,21);glPopMatrix();glPopMatrix();   glPopMatrix();   glPushMatrix();   glTranslatef (forward,0.0,z);   glRotatef ((GLfloat) turn, 0.0, 1.0, 0.0);  glTranslatef (-0.85, 1.75, 0.0);//左臂   glRotatef ((GLfloat) shoulder2, 1.0, 0.0, 0.0);  glTranslatef (0.0, -0.5, 0.0);  glColor3f(1.0,0.0,1.0);   glPushMatrix();  glScalef (0.3, 1.3, 0.4);  glutSolidCube(1.0); glPopMatrix();   glPopMatrix();   glutSwapBuffers();
}
//随便画一些小东西
void  Something()
{glPushMatrix();//位置的保存,进站
glRotatef (xRot, 0.0, 0.0, 1.0);
glRotatef (yRot, 1.0, 0.0, 0);
glTranslatef(4,-2,0);//设置位置glColor3f(0.6,1-xRot/360,yRot/360);
glutWireSphere(0.6f,10,10);
glTranslatef(-8,0,0);//设置位置glColor3f(yRot/360,0.6,xRot/360);
glutWireSphere(0.6f,10,10);
glTranslatef(4,0,4);//设置位置glColor3f(xRot/360,yRot/360,1);
glutWireSphere(0.6f,10,10);
glTranslatef(0,0,-8);//设置位置glColor3f(1,yRot/360,xRot/360);
glutWireSphere(0.6f,10,10);glPopMatrix();//位置的恢复,出站
}
void renderBitmapString(float x, float y, void *font,char *string)
{   char *c;   glRasterPos2f(x, y);   for (c=string; *c != '\0'; c++) {   glutBitmapCharacter(font, *c);   }
}   void reshape (int w1, int h1)
{   w=w1;   h=h1;  glViewport (0, 0, (GLsizei) w1, (GLsizei) h1);   glMatrixMode (GL_PROJECTION);  glLoadIdentity ();  gluPerspective(65.0, (GLfloat) w1/(GLfloat) h1, 1.0, 50.0);  glMatrixMode(GL_MODELVIEW);  glLoadIdentity();  glTranslatef (0.0, 0.0, -8.0);
}  void keyboard (unsigned char key, int x, int y)
{  switch (key) {  case 'z':// 变长d1++; glutPostRedisplay();break;case 'x':// 变宽d2++;glutPostRedisplay();break;case 'c':// 变短d1--; if(d1<0) d1=0;case 'v':// 变窄d2--;if(d2<0) d2=0;glutPostRedisplay();break;case 'u'://眼睛前移z2=z2+0.3;glutPostRedisplay();break;case'j'://眼睛后移z2=z2-0.3;glutPostRedisplay();break;case 'h':// 视线左移x2=x2-0.3;IsStop=false;glutPostRedisplay();break;case 'k':// 视线右移x2=x2+0.3;IsStop=false;glutPostRedisplay();break;case 'n':// 视线上移y2=y2+0.3;IsStop=false;glutPostRedisplay();break;case 'm':// 视线下移y2=y2-0.3;IsStop=false;glutPostRedisplay();break;case 'w': //向后走 turn1=turn;  forward = forward -0.04*sin((GLfloat)turn1/360*3.14*2);  z=z-0.05*cos((GLfloat)turn1/360*3.14*2);  if(tag==0){  shoulder1 = (shoulder1 + 1);  shoulder2 = (shoulder2 - 1);  if(shoulder1>=0){elbow=elbow-1.2;}  else{elbow=elbow+1.2;}  }  else  {  shoulder1 = (shoulder1 - 1);  shoulder2 = (shoulder2 + 1);  if(shoulder1>=0){elbow=elbow+1.25;}  else{elbow=elbow-1.2;}  }  if(shoulder1>30){  tag=1;  }  if(shoulder1<-30){  tag=0;  }
IsStop=true;glutPostRedisplay();  break;  case 's': //向前走 turn1=turn;  forward = forward +0.04*sin((GLfloat)turn1/360*3.14*2);  z=z+0.05*cos((GLfloat)turn1/360*3.14*2); if(tag==0){  shoulder1 = (shoulder1 - 1);  shoulder2 = (shoulder2 + 1);  }  else  {  shoulder1 = (shoulder1 + 1);  shoulder2 = (shoulder2 - 1);  }  if(shoulder1>30){  tag=0;  }  if(shoulder1<-30){  tag=1;  }
IsStop=true;glutPostRedisplay();  break;  case 'd'://右转turn = (turn - 5) % 360;  glutPostRedisplay();
IsStop=true;break;  case 'a'://左转turn = (turn + 5) % 360;  glutPostRedisplay();
IsStop=true;break;  case 'l':  shoulder1 = (shoulder1 + 2) % 360;  shoulder2 = (shoulder2 - 4) % 360;  glutPostRedisplay();
IsStop=true;break;  case 'L':  shoulder1 = (shoulder1 - 5) % 360;  shoulder2 = (shoulder2 + 10) % 360;  glutPostRedisplay();
IsStop=true;break;  case 'P':IsStop=false;break;case 'p':IsStop=false;break;case 'e':  exit(0);  break;  default:  break;  }
}
//设置视觉角度
void setOrthographicProjection()
{   // glMatrixMode(GL_PROJECTION);   glMatrixMode(GL_MODELVIEW);//glMatrixMode(GL_TEXTURE); glPushMatrix();   glLoadIdentity();   gluOrtho2D(0, w, 0, h);   glScalef(1, -1, 1);   glTranslatef(0, -h, 0);   glMatrixMode(GL_MODELVIEW);
}
void resetPerspectiveProjection()
{   glMatrixMode(GL_PROJECTION);   glPopMatrix();   glMatrixMode(GL_MODELVIEW);
}
//光源的坐标变化
void SpecialKeys(int key, int x, int y)
{
if(key == GLUT_KEY_UP)
xRot-= 5.0f;
if(key == GLUT_KEY_DOWN)
xRot += 5.0f;
if(key == GLUT_KEY_LEFT)
yRot -= 5.0f;
if(key == GLUT_KEY_RIGHT)
yRot += 5.0f;
if(key > 356.0f)
xRot = 0.0f;
if(key < -1.0f)
xRot = 355.0f;
if(key > 356.0f)
yRot = 0.0f;
if(key < -1.0f)
yRot = 355.0f;
glutPostRedisplay();
}
//鼠标事件
void Mouse(int button,int state, int x, int y)
{ if (state == GLUT_DOWN)//鼠标按下
{
if (x<0)
{
//向左旋转
yRot -= 50.0f;
}else if (x>=0)
{
//向右旋转
yRot += 50.0f;
}else if (y>=0)
{
//向上旋转
xRot-= 50.0f;
}else if (y<0)
{
//向下旋转
xRot += 50.0f;
}
if(xRot> 356.0f)
xRot = 0.0f;
if(xRot < -1.0f)
xRot = 355.0f;
if(yRot > 356.0f)
yRot = 0.0f;
if(yRot < -1.0f)
yRot = 355.0f;
glutPostRedisplay();
}
}
//时间函数,定时刷新
void TimerFunction(int value)
{
display();glutPostRedisplay();glutTimerFunc(50,TimerFunction, 1);
}
//主函数
int main(int argc, char** argv)
{  glutInit(&argc, argv);  glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);  glutInitWindowSize (800, 600);   glutInitWindowPosition (100, 100);  glutCreateWindow("机器人w:前行s:后退a:左转d:右转 武器z:变长x:变宽c:变短v:变窄 视线u:后移j:前移h:左移k:右移n:上移m:下移 p:自动旋转 l:手脚旋转 up:球体由大变小 down:球体由小变大 left:四球左旋转变色  right:四球右旋转变色鼠标:点击一次,四球变换颜色与位置");printf("机器人w:前行s:后退a:左转d:右转\n");printf("武器z:变长x:变宽c:变短v:变窄\n");printf("视线u:后移j:前移h:左移k:右移n:上移m:下移\n");printf("p:自动旋转 l:手脚旋转 \n");printf(" up:球体由大变小 down:球体由小变大 left:四球左旋转变色  right:四球右旋转变色\n鼠标:点击一次,四球变换颜色与位置\nw");SetupRC(); glutDisplayFunc(display);   glutReshapeFunc(reshape);  glutKeyboardFunc(keyboard);glutSpecialFunc(SpecialKeys);glutMouseFunc(Mouse);glutTimerFunc(20, TimerFunction, 1);//glutIdleFunc(display); glutMainLoop();  return 0;
}

计算机图形学之机器人相关推荐

  1. 计算机图形学:机器人的画法与填充

    详情请见 http://cuiqingcai.com/1597.html   http://cuiqingcai.com/1640.html #include<windows.h> #in ...

  2. 模式识别,计算机视觉,计算机图形学,智能控制,信号处理,语音识别,知识处理,机器学习,数据挖掘领域区别

    1.人工智能:给机器赋予人类的智能,让机器能够像人类那样独立思考.当然,目前的人工智能没有发展到很高级的程度,这种智能与人类的大脑相比还是处于非常幼稚的阶段,但目前我们可以让计算机掌握一定的知识,更加 ...

  3. 简述计算机图形的图形应用主要有哪些,5计算机图形学考试简答题复习.doc

    5计算机图形学考试简答题复习 计算机图形学考试简答题复习 1.简述计算机动画的概念,它经历了哪几个阶段的发展?(2分) 计算机动画是指采用图形与图像的处理技术,借助于编程或动画制作软件生成一系列的景物 ...

  4. ppt 胡事民 计算机图形学_从相机标定到SLAM,极简三维视觉六小时课程视频(附PPT)...

    谭平教授是加拿大西蒙弗雷泽大学副教授.不久前他与浙江大学合作了一系列三维视觉课程,内容涵盖相机标定.多视几何等多个方面.机器之心简要介绍了该系列课程,希望能够对读者学习三维视觉技术有所帮助. 课程内容 ...

  5. 图灵奖公布!计算机图形学先驱 Hanrahan 和 Catmull 获奖,祝贺两位好莱坞 3D 动画大片技术元老...

    作者 | 学术君 来源 | 学术头条(ID:SciTouTiao) 封图 | 视觉中国 18日,ACM(国际计算机协会)宣布,授予 Patrick M. Hanrahan 和 Edwin E. Cat ...

  6. 计算机图形学中需要掌握的数学基础知识有哪些?

    计算机图形学中使用了大量数学知识,尤其是矩阵和线性代数.虽然我们倾向于认为3D图形编程是紧跟最新技术的领域之一(它在很多方面确实是),但它用到的很多技术实际上可以追溯到上百年前,其中一些甚至是由文艺复 ...

  7. 计算机图形学当前研究热点和发展方向,微软亚洲研究院网络图形组深入解释了图形学的现状、发展和未来...

    计算机图形学是支持各种影视特效.三维动画影片.计算机游戏.虚拟现实以及大家手机上各种照片视频美化特效背后的技术基础,在本文中,微软亚洲研究院网络图形组深入解释了图形学的现状.发展和未来. 谈及&quo ...

  8. 什么是计算机图形学?(转自中国科学技术大学-刘利刚)

    (如需交流,请关注公众号:神马观止) [注] 由于时常有本科学生来向笔者询问计算机图形学是做什么的,为了使得学生能够快速了解计算机图形学,有利于他们在选择研究生方向做出适合自己的选择,特撰写此文.本文 ...

  9. 计算机图形物理知识,计算机图形学:虚拟和现实世界的融合

    谈及"计算机图形学",可能很多人会觉得很有距离感,或者和计算机视觉.图像处理等学科混淆.但是,如果告诉大家图形学技术是支持各种影视特效.三维动画影片.计算机游戏.虚拟现实以及大家手 ...

最新文章

  1. Conv1D和Conv2D的区别
  2. 软工文档”注意注意“事项
  3. 操作系统四: 内存连续分配
  4. (转载)hadoop2.2.0集群的HA高可靠的最简单配置
  5. 贝叶斯反垃圾邮件技术
  6. 搜索引擎ElasticSearchV5.4.2系列一之ES介绍
  7. 算法题目——整数划分(HRBUST-2004)
  8. 动态定时任务数据库获取方式
  9. 配对碱基链(信息学奥赛一本通-T1135)
  10. dubbo 与 zookeeper 的关系
  11. 现实世界的 Windows Azure:Davide Bedin讲述aKite零售管理解决方案
  12. java解析bt协议详解_bt协议详解 基础篇(下)
  13. MarkDown思维导图
  14. 升级笔记本CPU的常见知识汇总
  15. Spans,一个强大的概念
  16. 如何让电脑运行速度变快
  17. 华为OD机试 - 找数字、找等值元素(Java JS Python)
  18. 射频开关主要性能指标
  19. 常用的四种sql增删改查
  20. expect使用技巧

热门文章

  1. 【前端小白的每日一点】
  2. 电工基础知识-配电室安全须知
  3. 关于买房提前还款问题
  4. 微信小程序退出按钮回退到登录页面
  5. 本文是关于前端开发基本流程的分享
  6. 三星证实遭黑客入侵:Galaxy手机源代码泄露
  7. ABAP基本语法(一)附带思维导图学习材料等
  8. 万物互联,该怎么联?
  9. php苹果笔记本编程,Mac端软件推荐,让你成为编程高富帅!
  10. 2016年开源巨献:百度71款开源项目