不开心,想玩,当家的不许我玩,还说你要玩就玩,那我不管你了,哭哭TAT

用OPenGL原有的画三角形,正方形,点的函数来作图。

画圆是用化曲为直的思想,把圆分为很多分,越分的多越细,越像圆。

画菱形和圆的思想一样,来确定菱形顶点坐标。只是把圆周分的份数少一些

#include "stdafx.h"
#include<gl/glut.h>
#include<math.h>
#include <stdlib.h>
const double PI = 3.14159265357f;
const double R = 0.5f;
const int n = 150;void myDisplay(void)
{glClearColor(1.0, 1.0, 1.0, 1.0);glClear(GL_COLOR_BUFFER_BIT);//画倒三角glBegin(GL_TRIANGLES);glColor3f(1.0f, 0.0f, 0.0f);  glVertex2f(0.0f, -1.0f);glColor3f(0.0f, 1.0f, 0.0f);  glVertex2f(-1.0f, 1.0f);glColor3f(1.0f, 1.0f, 0.0f);  glVertex2f(1.0f, 1.0f);glEnd();//画圆,思想:化曲为直glBegin(GL_POLYGON);for (int i = 1; i <= n; i++){glVertex2f((R*cos(2 * PI / n*i)), R*sin(2 * PI / n*i));glColor3f(1.0f, 0.0f, 1.0f);}glEnd();//画五角星GLfloat a = 1 / (2 - 2 * cos(72 * PI / 180));GLfloat bx = a*cos(18 * PI / 180);GLfloat by = a*sin(18 * PI / 180);GLfloat cy = -a*cos(18 * PI / 180);GLfloat pointB[2] = { bx, by },pointC[2] = { 0.5, cy },pointD[2] = { -0.5, cy },pointE[2] = { -bx, by },pointA[2] = { 0, a };//按照A->C->E->B->D->A的顺序一笔画出五角星glBegin(GL_LINE_LOOP);glVertex2fv(pointA);glVertex2fv(pointC);glVertex2fv(pointE);glVertex2fv(pointB);glVertex2fv(pointD);glVertex2fv(pointA);glEnd();//画两个小三角glBegin(GL_TRIANGLES);glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(-0.8f, -0.8f);glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(-0.7f, -0.8f);glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-0.75f, -0.7f);glEnd();glBegin(GL_TRIANGLES);glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.8f, -0.8f);glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(0.7f, -0.8f);glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(0.75f, -0.7f);glEnd();glFlush();}int main(int argc, char *argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(200, 200);glutInitWindowSize(400, 400);glutCreateWindow("Hellow World!");glutDisplayFunc(&myDisplay);glutMainLoop();return 0;
}

下图为程序1 2 的运行结果


#include "stdafx.h"
#include<gl/glut.h>
#include<math.h>
#include <stdlib.h>
void myDisplay(void)
{glClearColor(0.0, 0.0, 0.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);//画白色正方形glColor3f(1.0f, 1.0f, 1.0f);glRectf(-0.5f, -0.5f, 0.5f, 0.5f);//这个函数只能画正的正方形//画红色正方形glBegin(GL_POLYGON);glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.0f, 0.5f);glVertex2f(0.5f, 0.0f);glVertex2f(0.0f, -0.5f);glVertex2f(-0.5f, 0.0f);glEnd();//画三角形glBegin(GL_TRIANGLES);glColor3f(0.2f, 0.4f, 0.8f);  glVertex2f(0.5f, 0.5f);glColor3f(0.2f, 0.4f, 0.8f);  glVertex2f(-0.5f, 0.5f);glColor3f(0.2f, 0.4f, 0.8f);  glVertex2f(0.0f, 1.0f);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.9f, 0.9f, 0.0f);  glVertex2f(0.5f, 0.5f);glColor3f(0.9f, 0.9f, 0.0f);  glVertex2f(0.5f, -0.5f);glColor3f(0.9f, 0.9f, 0.0f);  glVertex2f(1.0f, 0.0f);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.0f, 1.0f, 0.0f);  glVertex2f(0.5f, -0.5f);glColor3f(0.0f, 1.0f, 0.0f);  glVertex2f(-0.5f, -0.5f);glColor3f(0.0f, 1.0f, 0.0f);  glVertex2f(0.0f, -1.0f);glEnd();glBegin(GL_TRIANGLES);glColor3f(0.9f, 0.5f, 0.9f);  glVertex2f(-0.5f, 0.5f);glColor3f(0.9f, 0.5f, 0.9f);  glVertex2f(-0.5f, -0.5f);glColor3f(0.9f, 0.5f, 0.9f);  glVertex2f(-1.0f, 0.0f);glEnd();glFlush();}int main(int argc, char *argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(200, 200);glutInitWindowSize(400, 400);glutCreateWindow("Hellow World!");glutDisplayFunc(&myDisplay);glutMainLoop();return 0;
}

#include "stdafx.h"
#include<gl/glut.h>
#include<math.h>
#include <stdlib.h>
const double PI = 3.14159265357f;void myDisplay(void)
{glClearColor(0.0, 0.0, 0.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);//红色菱形glBegin(GL_POLYGON);glColor3f(1.0f, 0.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(0.5f, 0.5 *(tan(22.5*PI/180)));glVertex2f(1.0f, 0.0f);glVertex2f(0.5f, -0.5 *(tan(22.5*PI/180)));glEnd();glBegin(GL_POLYGON);glColor3f(1.0f, 0.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(-0.5f, 0.5 *(tan(22.5*PI / 180)));glVertex2f(-1.0f, 0.0f);glVertex2f(-0.5f, -0.5 *(tan(22.5*PI / 180)));glEnd();glBegin(GL_POLYGON);glColor3f(1.0f, 0.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(0.5*(tan(22.5*PI / 180)),0.5f);glVertex2f(0.0f, 1.0f);glVertex2f(-0.5*(tan(22.5*PI / 180)),0.5f);glEnd();glBegin(GL_POLYGON);glColor3f(1.0f, 0.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(0.5*(tan(22.5*PI / 180)), -0.5f);glVertex2f(0.0f, -1.0f);glVertex2f(-0.5*(tan(22.5*PI / 180)), -0.5f);glEnd(); //绿色菱形glBegin(GL_POLYGON);glColor3f(0.0f, 1.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(0.5f, 0.5 *(tan(22.5*PI / 180)));glVertex2f(cos(45 * PI / 180), cos(45 * PI / 180));glVertex2f(0.5*(tan(22.5*PI / 180)), 0.5f);glEnd();glBegin(GL_POLYGON);glColor3f(0.0f, 1.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(0.5f, -0.5 *(tan(22.5*PI / 180)));glVertex2f(cos(45 * PI / 180), -cos(45 * PI / 180));glVertex2f(0.5*(tan(22.5*PI / 180)), -0.5f);glEnd();glBegin(GL_POLYGON);glColor3f(0.0f, 1.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(-0.5f, 0.5 *(tan(22.5*PI / 180)));glVertex2f(-cos(45 * PI / 180), cos(45 * PI / 180));glVertex2f(-0.5*(tan(22.5*PI / 180)), 0.5f);glEnd();glBegin(GL_POLYGON);glColor3f(0.0f, 1.0f, 0.0f);glVertex2f(0.0f, 0.0f);glVertex2f(-0.5f, -0.5 *(tan(22.5*PI / 180)));glVertex2f(-cos(45 * PI / 180), -cos(45 * PI / 180));glVertex2f(-0.5*(tan(22.5*PI / 180)), -0.5f);glEnd();glFlush();}int main(int argc, char *argv[])
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(200, 200);glutInitWindowSize(400, 400);glutCreateWindow("Hellow World!");glutDisplayFunc(&myDisplay);glutMainLoop();return 0;
}

运行结果:

OpenGL画三角形 圆 五角星 菱形相关推荐

  1. OpenGL画三角形

    目录 OpenGL窗口 OpenGL三角形 OpenGL画圆 OpenGL窗口 [代码总览] glfw初始化.配置.创建窗口 glad初始化 渲染循环,检测输入并给窗口涂颜色 清理操作 // 渲染循环 ...

  2. 控制台上画三角形圆和直线

    基于C语言的. #include<stdio.h> #include<stdlib.h> #include<tchar.h> #include<windows ...

  3. ARM6818开发板画任意矩形,圆形,三角形,五角星,6818开发板画太极,画五星红旗(含码源与思路)

    本文利用6818开发板完成LCD屏上绘制任意的矩形,圆形,三角形或五角星形图案,还有绘制太极,五星红旗的方案. 目录 映射 绘制矩形 代码思路 代码实现 实践出真知 绘制圆形 代码思路 代码实现 绘制 ...

  4. 计算机图形学 画三角形、圆等(入门代码)

    [要求] 实现自己的三角形线框显示算法,能够将三角形的各个顶点经过坐标变换后变换到屏幕坐标,并以连线的方式将三角形的各个边显示出来.要求连线不使用Windows API,而是利用自己的2D Line算 ...

  5. Turtle 画方形 画圆 画三角形

    Turtle 画方形 画圆 画三角形 参考文档https://docs.python.org/3/library/turtle.html?highlight=turtle%20circle#turtl ...

  6. vue3.0 + typescript openlayers实现地图标点、移动、画线、显示范围、测量长度、测量面积、画三角形、画正方形、画圆、线选、画笔、清除测量、清除、地图上展示弹窗等功能

    vue3.0 + typescript openlayers实现地图标点.移动.画线.显示范围.测量长度.测量面积.画三角形.画正方形.画圆.线选.画笔.清除测量.清除地图所有等功能 由于最近项目中用 ...

  7. 菱形实现气泡Bubble,菱形画箭头,菱形画三角形

    菱形实现气泡Bubble,菱形画箭头,菱形画三角形 >>>>>>>>>>>>>>>>>>&g ...

  8. CSS3画圆环、各种三角形、五角星

    一.圆环效果 实现步骤: 1.分析:它是由一个正方形通过border-radius属性转化为圆形的:空心可以由调大边框来实现. 代码如下: 先画出一个空心的正方形 div{margin: 100px ...

  9. opengl画圆柱体、圆锥等并使用四元数旋转

    opengl画圆锥和圆柱体 具体资源欢迎下载:https://download.csdn.net/download/qq_32563773/13077923 画圆锥 如要画出想画的立方体,必须计算出来 ...

最新文章

  1. 部署MongoDB集群
  2. linux和windows的进程的虚拟地址空间
  3. 为什么很多企业都喜欢鹅厂出来的产品经理?
  4. 狄慧201771010104《面向对象程序设计(java)》第八周学习总结
  5. call和calling的用法_call的用法及短语例句
  6. 物联网发展跨越拐点!2020 AIoT产业年终盛典圆满落幕
  7. 物理机与虚拟机互传文件
  8. 学习OpenCV3 面阵相机标定方法
  9. 美国计算机科学专业申请条件,美国CS计算机科学专业申请条件有哪些?
  10. dedecms织梦后台不显示模块管理和辅助插件
  11. 百度搜索问答卡API提交
  12. LightGBM算法——广告收益回归预测模型
  13. 高新技术八大领域详细分类
  14. [转自CSDN]EXCEL工资数据表打印
  15. 在运行时使用 UDDI,第一部分(UDDI 技术文章)
  16. Mysql基础知识罗列
  17. 文本分类:垃圾邮件分类
  18. 阿里云中间件2024届校园招聘
  19. [迷题]你真的属于那仅有的2%的聪明人吗?
  20. js实现五子棋小游戏

热门文章

  1. Maven与nexus
  2. html 标签中的 alt 和 title 的作用
  3. 开心一刻 程序--内行话
  4. 初学安卓之二维码的简单实现,android开发网上购物app
  5. [技术发展-28]:信息通信网大全、新的技术形态、信息通信行业高质量发展概览
  6. 《炬丰科技-半导体工艺》化学清洗过程中重金属污染的监测方法
  7. Minecraft PCL 启动器
  8. ultraos win10启动盘_win10系统使用Ultraiso制作U盘启动盘的设置教程
  9. 使用endnote导入参考文献后的诸多问题
  10. Android使用SimpleDateFormat不同手机有时格式化手机不准确