//#include

#include

#include

using namespace std;

float rtri;

float rquad;

GLfloat points0[5][3] = { {0,1,0},{-1,-1,1},{1,-1,1},{1,-1,-1},{-1,-1,-1} };

GLfloat points1[8][3] = { {1,1,-1},{-1,1,-1},{-1,1,1},{1,1,1},{1,-1,1},{-1,-1,1},{-1,-1,-1},{1,-1,-1} };

//四棱锥颜色

GLfloat Colors0[4][3] = { {1,0,0},{0,1,0},{0,0,1},{1,1,0} };

//立方体颜色

GLfloat Colors1[6][3] = { {0,1,0},{1,0.5,0},{1,0,0},{1,1,0},{0,0,1},{1,0,1} };

//四棱锥顶点序列号

int vertice0[4][3] = { {0,1,2},{0,2,3},{0,3,4},{0,4,1} };

//立方体顶点序列号

int vertice1[6][4] = { {0,1,2,3},{4,5,6,7},{3,2,5,4},{7,6,1,0},{2,1,6,5},{0,3,4,7} };

void InitGl(GLvoid)

{

glShadeModel(GL_SMOOTH);

glClearColor(1.0f,1.0f,1.0f,1.0f);

glClearDepth(1.0f);

glEnable(GL_DEPTH_TEST);

glDepthFunc(GL_LEQUAL);

glEnable(GL_COLOR_MATERIAL);

glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);

}

/*

创建棱锥体

*/

void CreatePyramid()

{

glBegin(GL_TRIANGLES);

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

{

glColor3fv(Colors0[i]);

for (int j=0;j<3;j++)

{

int VtxId = vertice0[i][j];

glVertex3fv(points0[VtxId]);

}

}

glEnd();

//构建底面

glBegin(GL_QUADS);

glColor3f(1.0f,1.0f,1.0f);

for (int k=0;k<4;k++)

{

glVertex3fv(points0[k]);

}

glEnd();

}

/*

创建立方体

*/

void CreateCube()

{

glBegin(GL_QUADS);

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

{

glColor3fv(Colors1[i]);

for (int j=0;j<4;j++)

{

int VtxId = vertice1[i][j];

glVertex3fv(points1[VtxId]);

}

}

glEnd();

}

void display(void)

{

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

glPushMatrix();

glTranslatef(-1.5f,0.0f,-6.0f);//平移至左侧

glRotatef(rtri,0.0f,1.0f,0.0f);//旋转一个角度

CreatePyramid();//创建三棱锥

glLoadIdentity();//将矩阵归一化回原样

glTranslatef(1.5f,0.0f,-6.0f);//平移至右侧

glRotatef(rquad,1.0f,0.0f,0.0f);//旋转一个角度

CreateCube();//创建立方体

glPopMatrix();//

rtri += 0.02f;//修改三角塔旋转角度

rquad -= 0.05f;//修改立方体旋转角度

glutSwapBuffers();

}

void reshape(int width,int 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 main(int argc,char** argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE);

glutInitWindowSize(600,460);

glutCreateWindow("椎体和立方体");

InitGl();

glutDisplayFunc(display);

glutReshapeFunc(reshape);

glutIdleFunc(display);

glutMainLoop();

}

运行效果:

java3d创建立方体_Opengl创建几何实体——四棱锥和立方体相关推荐

  1. Revit API创建几何实体Solid并找到与之相交的元素

    几何实体的创建方法之一: 构成封闭底面,指定拉伸方向与拉伸高度.GeometryCreationUtilities //自创几何实体相交法 [TransactionAttribute(Autodesk ...

  2. c 创建mysql实体模型_EntityFrameworkCore 根据实体类自动创建数据库

    1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1   Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) ...

  3. 使用myeclipse创建带注解的model实体类

    使用myeclipse创建带注解的model实体类 1.先新建JPA项目: 如果没有就点击左下角的Show All Wizards. 点两次Next后,点击Finish即可,中间不用任何操作 (点第二 ...

  4. HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令

    1.上传tar包 这里我上传的是apache-hive-1.2.1-bin.tar.gz 2.解压 mkdir -p /home/tuzq/software/hive/ tar -zxvf apach ...

  5. 微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss)

    微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss) [1]首先在pages文件夹下创建一个页面文件夹,比如我打算创建个人中心,我创建一个ho ...

  6. mesh threejs 属性_threeJS创建mesh,创建平面,设置mesh的平移,旋转、缩放、自传、透明度、拉伸...

    这个小案例是当初我在学习的时候,小的一个小案例,代码还需要进一步优化:还请谅解~~:主要用到了threeJS创建mesh,创建平面,设置mesh的平移,旋转.缩放.自传.透明度.拉伸等这些小功能: 采 ...

  7. 【Flutter】Hero 动画 ( Hero 动画使用流程 | 创建 Hero 动画核心组件 | 创建源页面 | 创建目的页面 | 页面跳转 )

    文章目录 ◯.Hero 动画简介 一.创建 Hero 动画核心组件 二.创建源页面 三.创建目的页面 四.页面跳转 五.完整代码示例 六.相关资源 ◯.Hero 动画简介 Hero Widget 动画 ...

  8. 【Flutter】Animation 动画 ( AnimatedBuilder 动画使用流程 | 创建动画控制器 | 创建动画 | 创建动画作用的组件 | 关联动画与组件 | 动画执行 )

    文章目录 ◯.AnimatedBuilder 引入 一.创建动画控制器 二.创建动画 三.创建动画作用的组件 四.创建 AnimatedBuilder 关联动画与组件 五.动画运行 六.完整代码示例 ...

  9. 【Flutter】Animation 动画 ( AnimatedWidget 动画使用流程 | 创建动画控制器 | 创建动画 | 创建 AnimatedWidget 动画组件 | 动画运行 )

    文章目录 ◯.AnimatedWidget 组件引入 一.创建 AnimatedWidget 动画组件 二.创建动画控制器 三.创建动画 四.动画运行 五.完整代码示例 六.相关资源 Animated ...

最新文章

  1. jquery easy ui 简单字段选择搜索实现
  2. 智源青年科学家杨植麟:为什么预处理模型XLNet比BERT、RoBERTa更加优越
  3. maven jdk 版本配置
  4. 【LeetCode从零单排】No67.AddBinary
  5. php和java的memcached使用的兼容性问题解决过程
  6. C++入门经典-例4.1-声明、定义和使用函数
  7. Redhat 6 git 服务器配置(gitweb)
  8. @EnableConfigurationProperties
  9. java编写计算器实现cancel_用Java编写的简易计算器
  10. php 图像居中裁剪函数,PHP 实现的自定义图像居中裁剪函数示例
  11. 国美易卡设置cookie域,国美易卡匹配domain
  12. java 二进制 base64编码_java自定义实现base64编码转换
  13. air flow空调上是什么意思_airflow空调滤芯上是什么意思
  14. 关于Visual Assistant X助手在定位函数及结构体成员变量不准确的问题
  15. 网站故障和安全事件的应急预案
  16. 魔法王座微端不显示服务器,魔法王座无法登陆卡顿等常见问题解决方法
  17. 使用卷积神经网络(CupCnn)训练人脸检测模型
  18. linux清垃圾软件,似Win清理工具!Ubuntu下4个应用替代品
  19. 陀螺财经携百家产业合作伙伴推出“史上最强产业区块链案例集”
  20. 汉语口语自动翻译技术走出了纸上谈兵 (转)

热门文章

  1. linux7设备的挂载,centos7磁盘分区与挂载解析
  2. Lintcode--4(1)--A+B
  3. android ios logo原型,iOS关于logo和LaunchImage处理
  4. reduce python3_更少循环?看看这3个Python函数
  5. w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤
  6. linux弹性网卡,将弹性网卡附加到 ECS 实例上之后如何配置弹性网卡
  7. 移动端 长按事件_Flutter事件监听
  8. 前端总结·基础篇·CSS(二)视觉
  9. Html和websocket初识
  10. 信息系统开发平台OpenExpressApp - 应用模型ApplicationModel