OPenGL 画球代码

 1 #include <GL/glut.h>
 2 #include<cstdio>
 3 #include<cmath>
 4
 5 #define PI 3.14159265358979323846
 6 #define PI2 6.28318530717958647692
 7 #define r 80
 8
 9 GLsizei width = 600,height = 600;
10
11 int uStepsNum = 25;
12
13
14 void Init()
15 {
16       glClearColor(1,1,1,1);
17       glClearDepth(1);
18       glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
19       glOrtho(100.0, -100.0 ,100.0, -100.0, 100.0, -100.0);
20
21
22       glRotated(30,1,0,0);
23       glRotated(60,0,1,0);
24       glRotated(0,0,0,1);
25
26 }
27
28 void displayFunc()
29 {
30
31     double i,j;
32     double w = 1/(double)uStepsNum;
33     glColor3f(1.0,0.0,0.0);
34     for(i=0;i<=1;i+=w)
35     {
36         glBegin(GL_LINE_LOOP);
37         for(j=0;j<=1;j+=w)
38         {
39            double x=r*sin(PI*i)*cos(PI2*j);
40            double y=r*sin(PI*i)*sin(PI2*j);
41            double z=r*cos(PI*i);
42            glVertex3d(x,y,z);
43         }
44         glEnd();
45     }
46     glColor3f(0.0,1.0,0.0);
47     glBegin(GL_LINE_LOOP);
48    for(i=0;i<=1+w;i+=w)
49     {
50
51         for(j=0;j<=1+w;j+=w)
52         {
53            double x=r*sin(PI*j)*cos(PI2*i);
54            double y=r*sin(PI*j)*sin(PI2*i);
55            double z=r*cos(PI*j);
56            glVertex3d(x,y,z);
57         }
58
59     }
60     glEnd();
61
62     glutSwapBuffers();
63 }
64
65
66 int main(int argc,char* argv[])
67 {
68     glutInit(&argc,argv);
69     glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
70     glutInitWindowPosition(100,100);
71     glutInitWindowSize(width,height);
72     glutCreateWindow("球体");
73     Init();
74     glutDisplayFunc(displayFunc);
75     glutMainLoop();
76 }
时间: 2024-08-02 15:30:11

OPenGL 画球代码的相关文章

计算机图形学(二)输出图元_2_ OpenGL画线函数

 OpenGL画线函数 图形软件包一般都提供一个描述一条或多条直线段的函数,其中每一直线段由两个端点坐标位置定义.在OpenGL中,和选择一个点位置一样,我们使用glVertex函数选择单个端点的坐标位置.我们使用一对glBegin/g1End来引入一串端点位置.有三个OpenGL符号常量可用于指定如何把这一串端点位置连接成一组直线段.默认情况下,每一符号常量显示白色实线. 使用图元线常量GL_LINES可连接每一对相邻端点而得到一组直线段.通常,这会导致一组未连接的线段,除非重复某些坐标位置.

画线代码V1.0.0

画线代码: 最终效果图: 优点: 1.效果还行,计算量也不大(就一点2维直线一般式能有多少运算量). 缺点: 1.每条线怎么也是建模,可能会有点开销. 2.编辑起来很是麻烦. 代码部分: /*************************************** Editor: Tason Version: v1.0 Last Edit Date: 2018-XX-XX Tel: [email protected] Function Doc: 1.自建Mesh划线 ************

opengl画个球

本文介绍两种方法用opengl绘制一个球体,一种是计算球面点的位置,然后画出来,另一种是glut工具箱自带的函数. 一.直接绘制法 直接贴代码,解释都写在注释里了.绘制时先移动好坐标系,然后调用这方法画就行. <span style="font-family:SimSun;font-size:12px;">//球心坐标为(x,y,z),球的半径为radius,M,N分别表示球体的横纵向被分成多少份 void drawSphere(GLfloat xx, GLfloat yy

Assignment 2 使用OpenGL画安卓机器人

一. 实现简述 Assignment 2 Report 目标:画一个安卓机器人. 代码结构:在 glutDisplayFunc(drawRobot)中的参数 drawRobot 函数是实 现画机器人的最外层函数,其中包括画脸.画身体.画手和画脚.每个函数又继 续细分画的步骤和方法.如下图所示: 二. 心得体会 这次任务让我对 OpenGl 有了初步认识.通过阅读课本和网上的资料,掌握 使用 OpenGl 的基本功能,比如如何画基本的点.线和多边形.并理解了一些之 前没明白的重要概念,比如 glL

用OpenGL画线

. 两点之间的连线称之为线段,在屏幕上显示线段放在现在已经不是稀奇的事情,大多数高级图形API都可以轻松实现,我尝试用OpenGL画线,在这里记录一下收获. . OpenGL这个级别的图形API,通常会提供一些绘制基本图形的接口,这些基本图形称之为图元,而OpenGL提供了点,线段,三角形三种图元绘制接口,说出来你可能不信,OpenGL就只能绘制这三种图形,本篇博文的主题是画线,OpenGL能直接绘制的图元之一. 用OpenGL绘制线段图元 给出两点的坐标,调用API即可直接画出线段. // 伪

OpenGL画圆

中点画圆 1 #include<gl/glut.h> 2 3 4 void MidPointCirle(int r) 5 { 6 int x,y; 7 float d; 8 x=0;y=r;d=1.25-r; 9 glColor3f(1.0f,1.0f,1.0f); 10 glVertex2i(x,y); 11 while(x<=y) 12 { 13 if(d<0) 14 d+=2*x+3; 15 else 16 { 17 d+=2*(x-y)+5; 18 y--; 19 } 20

opengl画星星

#include <windows.h> #include <gl/gl.h> #include <gl/glaux.h> #include <math.h> #define pi 3.1415926 #pragma comment (lib, "opengl32.lib") #pragma comment (lib, "glu32.lib") #pragma comment (lib, "glaux.lib

openGL画不断变化位置|大小|角度|颜色的五角星

#include <windows.h> #include <gl/gl.h> #include <gl/glaux.h> #include <math.h> #include <time.h> #pragma comment(lib, "opengl32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glaux.lib

OpenglES2.0 for Android:来画个球吧

OpenglES2.0 for Android:来画个球吧 理解球坐标系 首先看下球的坐标系 ,如图 : (图来自百度百科 ) 设球上有一点 A ,球心为O ,OA在 xOy上的投影与X轴夹角为 φ (范围为 0 到360 ,单位 :度), OA在与Z的夹角为 θ (范围为 0 到 180  ,单位:度 ),球的半径为r,则有 ; r * sin θ = y / sin φ    r * sinθ  = x / cos φ   z = r * cos θ 由此可得 X,Y,Z坐标 我们前面已经知