OpenGL: 在空间绘制出一系列螺旋上升的点

转载 2014年03月05日 15:24:00

代码如下:

#define GLUT_DISABLE_ATEXIT_HACK
#include <math.h>

#include "gl/glut.h"
#pragma comment(lib, "glut32.lib")

void Drawing()
{
	GLfloat x, y, z = -50.0f, inc = 0, angle;
	glPushMatrix();                             //将当前矩阵压入矩阵堆栈
	{
		glRotatef(-45.0f, 1.0f, 0.0f, 0.0f);    //将当前坐标系绕X轴旋转-45度
		glRotatef(15.0f, 0.0f, 1.0f, 0.0f);     //将当前坐标系再绕Y轴旋转15度

		glColor3f(0.0f, 1.0f, 0.0f);            //将绘图色设置为红色
		glBegin(GL_POINTS);//注意GL_POINT 跟GL_POINTS的区别
		{
			for (angle = 0.0f; angle <= 2.0f * 3.14159f * 3.0f; angle += 0.1f)
			{
				x = inc * sin(angle);           //计算点的X坐标
				y = inc * cos(angle);           //计算点的Y坐标
				glVertex3f(x, y, z);            //绘制点
				z += 0.5f;                      //Z坐标增量
				inc += 0.3f;                    //半径增量
			}
		}
		glEnd();
	}
	glPopMatrix();                              //恢复原矩阵
	glutSwapBuffers();							//这里就不用glFlush();
}

void Initialization()
{
	glClearColor(0.0f, 0.0f, 0.0f,1.0f);
}

void OnDisplay()
{
	glClear(GL_COLOR_BUFFER_BIT);
	Drawing();
}

void OnReshape(int w, int h)
{
	GLfloat aspect =(GLfloat)w / (GLfloat)h;
	GLfloat nRange = 100.0f;

	glViewport(0, 0, w, h);

	glMatrixMode(GL_PROJECTION);     //将当前矩阵指定为投影模式
	glLoadIdentity();

	//设置三维投影区
	if (w <= h)
	{
		glOrtho(-nRange, nRange, -nRange / aspect, nRange / aspect, -nRange, nRange);
	} 
	else
	{
		glOrtho(-nRange, nRange, -nRange * aspect, nRange * aspect, -nRange, nRange);
	}
	glMatrixMode(GL_MODELVIEW);     //将当前矩阵恢复为模型视图模式
	glLoadIdentity();
}


void main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
	glutInitWindowSize(640, 480);
	glutInitWindowPosition(10, 10);
	glutCreateWindow("绘制三维点");
	glutDisplayFunc(OnDisplay);
	glutReshapeFunc(OnReshape);

	Initialization();
	glutMainLoop();
}

运行效果如下:


基于Qt的轨迹还原之三:代码实现与测试

先上代码,由于程序结构很清楚,上节也讲到了Qt中实现OpenGL的框架,因此代码读起来没有太大困难,如果有问题,欢迎私信~ MyGLWidget: #ifndef MYGLWIDGET_H #def...
  • cleopard66
  • cleopard66
  • 2016-06-30 23:04:37
  • 1177

[OpenGL]图元的绘制——空间点/直线;图元整理

glBegin可支持的OpenGL图元 模式 图元类型 GL_POINTS 将指定的各个顶点用于创建单个的点 GL_LINES 将指定顶点用于创建线段。两个顶点指定一条单独的...
  • ouyangshima
  • ouyangshima
  • 2014-01-08 01:45:48
  • 3461

OpenGL 绘制螺旋线

1.如图: 2.代码/** * @描述 使用opengl绘制螺旋线 * @项目名称 App_OpenGL * @包名 com.android.opengl * @类名 SpiralMai...
  • lovoo
  • lovoo
  • 2016-05-15 22:17:46
  • 783

OpenGL——点的绘制(使用OpenGL来绘制可旋转坐标系的螺旋线)

package com.example.opengl1; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio...
  • caihongshijie6
  • caihongshijie6
  • 2014-04-22 10:49:57
  • 2196

初学opengl(二)画散点图

作为一个计算机学院不合格的学生,大学都快过完了还处于编程小白的状态,各种知识都不会。作为初学的练习,自己写了一个简单的散点图。有些写的不对的地方或者可以改进的地方,还请大家指正。 我是这么考虑的,...
  • u011636440
  • u011636440
  • 2016-03-03 11:03:43
  • 3146

openGL画点---openGL学习笔记(二)

本例使用openGL画点方法,画出一条螺旋线,下图为成果图。(图片不是很清晰) 实现步骤: 1.同样是创建GLSurfaceView对象,再创建GLSurfaceView.renderer实现类....
  • a358333644
  • a358333644
  • 2016-02-25 17:03:03
  • 933

OpenGL: 在空间绘制出一系列螺旋上升的点

代码如下:#define GLUT_DISABLE_ATEXIT_HACK #include #include "gl/glut.h" #pragma comment(lib, "glut32.l...
  • Augusdi
  • Augusdi
  • 2014-03-05 15:24:00
  • 1721

openGl代码入门笔记[3]:绘制抛物线

原创文章,使用时请联系作者 使用Bresenham方法绘制抛物线时,过程类似绘制椭圆,需要对曲线方程求导找到斜率为1的位置,并以此点将曲线绘制分为两部分,两部分互为反函数,当区域较小时,抛物...
  • gxsHeeN
  • gxsHeeN
  • 2016-02-05 00:24:11
  • 1032

人工智能--螺旋上升的60年

这是2016年10月29日,高文院士在“泰山学术论坛–智慧矿山信息技术专题”会议上做的报告。有幸聆听,受益匪浅。现在将主要内容整理如下:报告人简介:高文,北京大学教授,博士生导师,中国工程院院士(55...
  • youyuyixiu
  • youyuyixiu
  • 2016-10-30 11:51:19
  • 1057

学习OpenGL(三)绘制点

【前言】 在第一节中我们写了一个例子,绘制了一个白色的矩形在窗口中。从本节开始我们开始学习如何绘制这些几何图形。 由于任何的复杂图形都是由基本图元(点、线、面)构成,那么我们先从基本图形开始学起。 【...
  • th_gsb
  • th_gsb
  • 2016-03-31 16:23:35
  • 1247
收藏助手
不良信息举报
您举报文章:OpenGL: 在空间绘制出一系列螺旋上升的点
举报原因:
原因补充:

(最多只允许输入30个字)