java3d创建立方体_Opengl创建几何实体——四棱锥和立方体
//#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创建几何实体——四棱锥和立方体相关推荐
- Revit API创建几何实体Solid并找到与之相交的元素
几何实体的创建方法之一: 构成封闭底面,指定拉伸方向与拉伸高度.GeometryCreationUtilities //自创几何实体相交法 [TransactionAttribute(Autodesk ...
- c 创建mysql实体模型_EntityFrameworkCore 根据实体类自动创建数据库
1.首先新建 Asp.Net Core WebApi 项目 2.添加一下引用 : 2.1 Pomelo.EntityFrameworkCore.MySql(我用的Mysql 根据自己情况引用就行) ...
- 使用myeclipse创建带注解的model实体类
使用myeclipse创建带注解的model实体类 1.先新建JPA项目: 如果没有就点击左下角的Show All Wizards. 点两次Next后,点击Finish即可,中间不用任何操作 (点第二 ...
- 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 ...
- 微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss)
微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss) [1]首先在pages文件夹下创建一个页面文件夹,比如我打算创建个人中心,我创建一个ho ...
- mesh threejs 属性_threeJS创建mesh,创建平面,设置mesh的平移,旋转、缩放、自传、透明度、拉伸...
这个小案例是当初我在学习的时候,小的一个小案例,代码还需要进一步优化:还请谅解~~:主要用到了threeJS创建mesh,创建平面,设置mesh的平移,旋转.缩放.自传.透明度.拉伸等这些小功能: 采 ...
- 【Flutter】Hero 动画 ( Hero 动画使用流程 | 创建 Hero 动画核心组件 | 创建源页面 | 创建目的页面 | 页面跳转 )
文章目录 ◯.Hero 动画简介 一.创建 Hero 动画核心组件 二.创建源页面 三.创建目的页面 四.页面跳转 五.完整代码示例 六.相关资源 ◯.Hero 动画简介 Hero Widget 动画 ...
- 【Flutter】Animation 动画 ( AnimatedBuilder 动画使用流程 | 创建动画控制器 | 创建动画 | 创建动画作用的组件 | 关联动画与组件 | 动画执行 )
文章目录 ◯.AnimatedBuilder 引入 一.创建动画控制器 二.创建动画 三.创建动画作用的组件 四.创建 AnimatedBuilder 关联动画与组件 五.动画运行 六.完整代码示例 ...
- 【Flutter】Animation 动画 ( AnimatedWidget 动画使用流程 | 创建动画控制器 | 创建动画 | 创建 AnimatedWidget 动画组件 | 动画运行 )
文章目录 ◯.AnimatedWidget 组件引入 一.创建 AnimatedWidget 动画组件 二.创建动画控制器 三.创建动画 四.动画运行 五.完整代码示例 六.相关资源 Animated ...
最新文章
- jquery easy ui 简单字段选择搜索实现
- 智源青年科学家杨植麟:为什么预处理模型XLNet比BERT、RoBERTa更加优越
- maven jdk 版本配置
- 【LeetCode从零单排】No67.AddBinary
- php和java的memcached使用的兼容性问题解决过程
- C++入门经典-例4.1-声明、定义和使用函数
- Redhat 6 git 服务器配置(gitweb)
- @EnableConfigurationProperties
- java编写计算器实现cancel_用Java编写的简易计算器
- php 图像居中裁剪函数,PHP 实现的自定义图像居中裁剪函数示例
- 国美易卡设置cookie域,国美易卡匹配domain
- java 二进制 base64编码_java自定义实现base64编码转换
- air flow空调上是什么意思_airflow空调滤芯上是什么意思
- 关于Visual Assistant X助手在定位函数及结构体成员变量不准确的问题
- 网站故障和安全事件的应急预案
- 魔法王座微端不显示服务器,魔法王座无法登陆卡顿等常见问题解决方法
- 使用卷积神经网络(CupCnn)训练人脸检测模型
- linux清垃圾软件,似Win清理工具!Ubuntu下4个应用替代品
- 陀螺财经携百家产业合作伙伴推出“史上最强产业区块链案例集”
- 汉语口语自动翻译技术走出了纸上谈兵 (转)
热门文章
- linux7设备的挂载,centos7磁盘分区与挂载解析
- Lintcode--4(1)--A+B
- android ios logo原型,iOS关于logo和LaunchImage处理
- reduce python3_更少循环?看看这3个Python函数
- w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤
- linux弹性网卡,将弹性网卡附加到 ECS 实例上之后如何配置弹性网卡
- 移动端 长按事件_Flutter事件监听
- 前端总结·基础篇·CSS(二)视觉
- Html和websocket初识
- 信息系统开发平台OpenExpressApp - 应用模型ApplicationModel