OpenGL——二次曲面函数(球面-圆锥面-圆柱面)

代码:

#include<iostream>
#include <math.h>
#include<Windows.h>
#include <GL/glut.h>

using namespace std;

GLsizei winWidth = 500, winHeight = 500;

void init()
{
    glClearColor(1.0, 1.0, 1.0, 0.0);
}

void wireQuadSurfs()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0, 0.0, 1.0);

    gluLookAt(2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0);

    glPushMatrix();
    glTranslatef(1.0, 1.0, 1.0);
    //球面,半径为0.5
    glutWireSphere(0.50, 8, 6);
    glPopMatrix();

    glPushMatrix();
    glTranslatef(1.0, -0.5, 0.5);
    //圆锥面,底面半径为0.5,高位1.5
    glutWireCone(0.5, 1.5, 7, 6);
    glPopMatrix();

    GLUquadricObj *cylinder;
    glPushMatrix();
    glTranslatef(0.0, 1.5, 0.8);
    //激活二次曲面绘制器
    cylinder = gluNewQuadric();
    //每对顶点之间用线连接,按线框图形式显示
    gluQuadricDrawStyle(cylinder, GLU_LINE);
    //生成圆柱面
    gluCylinder(cylinder, 0.5, 0.5, 1.5, 6, 4);
    glPopMatrix();

    glFlush();
}

void winReshapeFcn(GLint newWidth, GLint newHeight)
{
    glViewport(0, 0, (GLsizei)newWidth, (GLsizei)newHeight);

    glMatrixMode(GL_PROJECTION);
    glOrtho(-2.0, 2.0, -2.0, 2.0, 0.0, 5.0);

    glMatrixMode(GL_MODELVIEW);

    glClear(GL_COLOR_BUFFER_BIT);
}

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(100, 100);

    glutInitWindowSize(winWidth, winHeight);
    glutCreateWindow("球面-圆锥面-圆柱面");
    init();
    glutDisplayFunc(wireQuadSurfs);
    glutReshapeFunc(winReshapeFcn);
    glutMainLoop();

    system("pause");
    return 0;
}

运行结果:

原文地址:https://www.cnblogs.com/farewell-farewell/p/9480901.html

时间: 2024-07-29 22:04:35

OpenGL——二次曲面函数(球面-圆锥面-圆柱面)的相关文章

opengl常用函数

glAccum 操作累加缓冲区   glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形   glAlphaFunc允许设置alpha检测功能   glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中   glArrayElement 定义一个被用于顶点渲染的数组成分   glBegin,glEnd 定义一个或一组原始的顶点   glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理  glBitmap 绘制一个位图

【计算机图形学】openGL常用函数

OpenGL常用函数   glAccum 操作累加缓冲区   glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形   glAlphaFunc允许设置alpha检测功能   glAreTexturesResident 决定特定的纹理对象是否常驻在纹理内存中   glArrayElement 定义一个被用于顶点渲染的数组成分   glBegin,glEnd 定义一个或一组原始的顶点   glBindTexture 允许建立一个绑定到目标纹理的有名称的纹理  gl

OpenGL位图函数

[OpenGL位图函数] 1.OpenGL中glBitmap用于绘制一个二值阵列. When drawn, the bitmap is positioned relative to the current raster position, and framebuffer pixels corresponding to 1s in the bitmap are written using the current raster color or index. Frame-buffer pixels

再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作 者:郭辉 *完成时间:2016年5月10日 *版 本 号:v1.0 * *问题描述:再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高),,以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,实现需要的成员函数,并设计main函数完成测试. *输入描述:无. *程序输出:体积,表面积. */ #

openGL初学函数解释汇总

openGL初学函数解释汇总 1.GLUT工具包提供的函数 //GLUT工具包所提供的函数 glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次. glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);//初始化显示模式,(颜色使用RGB,单缓冲GLUT_SINGLE\GLUT_DOUBLE双缓冲) glutInitWindowPosition(100, 100);//初始化窗口位置 glutInit

# OpenGL常用函数详解(持续更新)

OpenGL常用函数详解(持续更新) 初始化 void glutInit(int* argc,char** argv)初始化GULT库,对应main函数的两个参数 void gultInitWindowSize(int witth,int height)指定GULT窗口产生的窗口的大小 void gultInitWindowsPosition(int x,int y)指定窗口产生的位置,以像素为单位,默认在左上角 void gultInitDisplayMode(unsigned int mod

OpenGL之路(四)自制图形函数(正方体、圆柱、圆锥)

#include <gl/glut.h> #include <gl/GLU.h> #include <gl/GL.h> #pragma comment(lib, "opengl32.lib") #pragma comment(lib, "glut32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glut.lib"

OpenGL一些函数详解(二)

OpenGL ES顶点数据绘制技巧 在OpenGL中,绘制一个长方体,需要将每个顶点的坐标放在一个数组中.保存坐标时有一些技巧(由于字母下标不好表示,因此将下标表示为单引号,如A1将在后文中表示为A' ): (1)将对立面坐标保存在相邻的位置,如坐标的保存顺序为:前面(A'ABB'),后面(D'DCC'),上面(D'A'B'C'),下面(DABC),左面(D'A'AD),右面(C'B'BC).因为对立面的坐标除了其垂直的那根轴的坐标相反以外,其他坐标值一样:如前面和后面(垂直于z轴),x和y的坐

openGL画图函数

OpenGL在画图过程中大致可以分为三步,第一步创建好对应的vertex队列,同时在适当的时机将vertex绑定到GL内部:第二步利用BUFFER_ARRAY向vertex队列提交顶点信息以便对vertex队列进行初始化:第三步则是绑定已经初始化的vertex队列,同时利用对应的画图函数进行绘制. vertex队列的生成主要利用glGenVertexArrays函数完成,其第一个参数定义需要生成的队列的个数:第二个函数则用于接收生成的vertex队列索引.在生成了顶点队列之后,需要利用glBin