Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >5.5 Opengl编程实例-红蓝三角形

5.5 Opengl编程实例-红蓝三角形

作者头像
步行者08
发布于 2018-10-09 10:08:30
发布于 2018-10-09 10:08:30
71400
代码可运行
举报
文章被收录于专栏:图形学与OpenGL图形学与OpenGL
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <GL/glut.h>

typedef GLfloat point2d[2]; // a point data type

void triangle( point2d a, point2d b, point2d c) // display a triangle

{

    glBegin(GL_TRIANGLES);

    glVertex2fv(a);

    glVertex2fv(b);

    glVertex2fv(c);

    glEnd();

}

void display(void)

{

    point2d v[3] = {{-1.0, -0.58}, {1.0, -0.58}, {0.0, 1.15}}; //initial triangle vertices

    glClear(GL_COLOR_BUFFER_BIT); // Clear display window

    glColor3f(0.0,0.0,1.0); // Set fill color to blue

    glLoadIdentity();//应该放在此处,保证每次显示正确

    glViewport(0, 0, 300, 400); // Set left viewport

    triangle(v[0], v[1], v[2]);

    glColor3f(1.0,0.0,0.0); // Set fill color to red

    glViewport(300, 0, 300, 400); // Set right viewport

    glRotatef(90.0, 0.0, 0.0, 1.0); // Rotate about z axis

    triangle(v[0], v[1], v[2]); // Display blue triangle

    glFlush();

}

void init()

{

    glMatrixMode(GL_PROJECTION);

    //glLoadIdentity();//如果放在此处,会导致第一次显示正确,再次刷新时图形旋转

    gluOrtho2D(-2.0, 2.0, -2.0, 2.0);

    glMatrixMode(GL_MODELVIEW);

    glClearColor(1.0, 1.0, 1.0,1.0);

}

void main(int argc, char **argv)

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

    glutInitWindowSize(600, 400);

    glutCreateWindow("Triangle");

    glutDisplayFunc(display);

    init();

    glutMainLoop();

}

注意:教材中原代码中第55行”glLoadIdentity()”位置不对,现在更正至第31行。教材中原图5.17同时更正如上图。 思考:教材中原代码中根据所给三角形顶点坐标,三角形应为一个正角形,为何显示时不是正角形呢?同时,在旋转后的三角形也发生了变形,请分析原因,并给出修改建议。提示:请从”glViewport()”函数入手。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年08月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++】OpenGL:创建线段和多边形示例
首先,将main函数中的//glutDisplayFunc(lines); //传递需要勾画的函数取消注释,这是调用线段的操作;
DevFrank
2024/07/24
1170
【C++】OpenGL:创建线段和多边形示例
附加实验1 Sierpinski三角形
    Sierpinski三角形是一种分形图形,它是递归地构造的。最常见的构造方法如下图所示:把一个三角形分成四等份,挖掉中间那一份,然后继续对另外三个三角形进行这样的操作,并且无限地递归下去。每一次迭代后整个图形的面积都会减小到原来的3/4,因此最终得到的图形面积显然为0。这也就是说,Sierpinski三角形其实是一条曲线。
步行者08
2018/10/09
6140
第5章代码-三维观察
目录 5.5 编程实例 5.5.1 二维实例——红蓝三角形 5.5.2 三维实例——立方体透视投影 5.5 编程实例 5.5.1 二维实例——红蓝三角形 #include <GL/glut.h> ty
步行者08
2020/09/19
4650
实验2 OpenGL交互
在OpenGL中处理鼠标事件非常方便,GLUT已经为我们注册好了函数,只需要我们提供一个方法。使用glutMouseFunc函数,就可以注册自定义函数,这样当发生鼠标事件时就会自动调用自己定义的方法。 函数的原型是:
步行者08
2020/10/27
1.3K0
4.4.1 二维复合矩阵编程实例
(a)变换前的三角形                 (b)变换后的三角形          (c)程序显示结果
步行者08
2018/10/09
5250
实验3 OpenGL几何变换
(1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移、旋转、缩放变换的方法;
步行者08
2018/10/09
1.3K0
有限元一阶四面体单元python编程(二)
求得按单元排列的位移和应力: def nodeData2ElemData(nodeData, ELEM, nodes_per_elem =4): #后处理云图是按照单元依次绘制,所有须要把按节点排列的数据转化为按单元排列 node_qty = nodeData.shape[0] # 按节点排序的 X向应力 等等这样的数组,size node_qty x 1 elem_qty = ELEM.shape[0] # ELEM 中 2到5 列包含单元中4个节点的ID elemDat
用户6021899
2020/11/11
9350
有限元一阶四面体单元python编程(二)
第4章代码-图形几何变换
目录 4.4 编程实例——三角形与矩形变换及动画 4.4.1 自定义矩阵变换实例——三角形变换 4.4.2 OpenGL几何变换实例——矩形变换 4.4.3 变换应用实例——正方形旋转动画 4.4
步行者08
2020/09/19
7070
【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )
三角形绘制即绘制一个面 , 三个点可以唯一确定一个面 , 四个点及多个点组成的多边形 , 不一定是一个面 ;
韩曙亮
2023/03/28
2.8K0
【OpenGL】十三、OpenGL 绘制三角形  ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )
实验8 OpenGL交互
(1) 运行示范实验代码1,掌握程序鼠标交互方法,尝试为其添加键盘与菜单控制,实现同样功能;
步行者08
2018/10/09
1.2K0
PyOpenGL 绘制彩色四面体
由PyOpenGL官方demo NEHE lesson5 修改而来。 from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * import sys import numpy as np NODE= np.array([[0,0,0], [0.25,0,0], [0,0.5,0], [0.25,0.5,0], [0.,0.,0.
用户6021899
2020/11/03
7400
9.3.3编程实例-图形拾取
int select_point = 0; //1 是第一个点,2是第二个,以此类推
步行者08
2018/10/09
6800
OpenGL基本框架与三维对象绘制
上次我们介绍了OpenGL的环境构建和二维对象的绘制,这次我们来讲讲三维对象的绘制:  绘制代码如下: // opengltest2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <GL/glut.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.1415926 //金字塔初始
Zoctopus
2018/06/04
7980
写给 python 程序员的 OpenGL 教程
OpenGL 是 Open Graphics Library 的简写,意为“开放式图形库”,是用于渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL 不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C / C++ / python / java 都可以很好支持 OpengGL,我当然习惯性选择 python 语言。
全栈程序员站长
2022/07/22
3.4K0
写给 python 程序员的 OpenGL 教程
图形学上机实验
可以将一个五角星划分为10个三角形,假设五角星的各边长,分别计算出10个定点的坐标,然后逐个绘制三角形,将其拼接为五角星;
客怎眠qvq
2022/11/01
1.7K0
图形学上机实验
第6章代码-三维造型
本实例参考了著名的Nehe OpenGL示例构建了四棱锥和立方体的实体模型,这两个模型的顶点位置如图6.13所示。可见,四棱锥的四个侧面的顶点序列分别为v0v1v2、v0v2v3、v0v3v4、v0v4v1,底面为v1v2v3v4。传递顶点信息时使用了glVertex3fv函数,以顶点首地址作为参数,比glVertex3f函数直接用顶点坐标作为参数的方式更为方便、直观。在坐标系原点建好的实体可以通过几何变换放置在任意不同的位置。在本示例中,四棱锥被放置在左侧,立方体被放置在右侧。
步行者08
2020/09/21
5060
第6章代码-三维造型
OpenGL ES学习001---绘制三角形
PS:OpenGL ES是什么? OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。OpenGL ES 是从 OpenGL 裁剪的定制而来的,去除了glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性。经过
cMusketeer
2018/03/28
1.2K0
OpenGL ES学习001---绘制三角形
实验2 基本图元光栅化
(1) 阅读学习所给的直线光栅化的DDA算法示范代码,将其彻底弄懂,根据实验思考题找出其中的错误;同时能在计算机上编译运行,输出正确结果,指出错误并截图保存为图1至word实验文档(30分钟);
步行者08
2019/02/25
1.1K0
实验2 基本图元光栅化
用OpenGL绘制平滑着色的三角形与相交区域的混合着色
一、三角形的绘制 在OpenGL中,面是由多边形构成的。三角形可能是最简单的多边形,它有三条边。可以使用GL_TRIANGLES模式通过把三个顶点连接到一起而绘出三角形。 使用GL_TRIANGLE_STRIP模式可以绘制几个相连的三角形,系统根据前三个顶点绘制第一个多边形,以后每指定一个顶点,就与构成上一个三角形的后两个顶点绘制形的一个三角形。 使用GL_TRIANGLE_FAN模式可以绘制一组相连的三角形,这些三角形绕着一个中心点成扇形排列。 第一个顶点构成扇形的中心,用前三个顶点绘制会最初的三角形后,
Zoctopus
2018/06/04
2.2K0
7.5.5编程实例-Bezier曲线曲面绘制
      (a)Bezier曲线                         (b) Bezier曲面
步行者08
2018/10/09
1.4K0
相关推荐
【C++】OpenGL:创建线段和多边形示例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验