///////////////////////////////////
// square.cpp
//
// OpenGL program to draw a square.
//
// Sumanta Guha.
///////////////////////////////////
#include <GL/freeglut.h>
#include <cmath>
#define PI 3.14
void drawDisc(float R, float X, float Y, float Z) {
static int N = 100; // #vertices.
float t = 0.0;
glBegin(GL_LINE_LOOP);
for (int i = 0; i <= N; ++i) {
glVertex3f(X + R * cos(t), Y + R * sin(t), Z);
t += 2 * PI / N;
}
glEnd();
}
void drawDiamond() {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_POLYGON);
glVertex3f(50, 26, 0);
glVertex3f(56, 20, 0);
glVertex3f(50, 14, 0);
glVertex3f(44, 20, 0);
glEnd();
}
void drawCoss() {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_POLYGON);
glVertex3f(73, 51, 0);
glVertex3f(85, 51, 0);
glVertex3f(85, 49, 0);
glVertex3f(73, 49, 0);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(78, 56, 0);
glVertex3f(80, 56, 0);
glVertex3f(80, 44, 0);
glVertex3f(78, 44, 0);
glEnd();
}
void drawTriangle() {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_POLYGON);
glVertex3f(50, 86, 0);
glVertex3f(56, 74, 0);
glVertex3f(44, 74, 0);
glEnd();
}
void drawArrow() {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_POLYGON);
glVertex3f(50, 68, 0);
glVertex3f(44, 63, 0);
glVertex3f(56, 63, 0);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(46, 63, 0);
glVertex3f(54, 63, 0);
glVertex3f(54, 32, 0);
glVertex3f(46, 32, 0);
glEnd();
}
void drawPiont(float R, float X, float Y, float Z) {
static int N = 200; // #vertices.
float t = 0.0;
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glBegin(GL_TRIANGLE_FAN);
glVertex3f(X, Y, 0); //center point
for (int i = 0; i < N + 1; i++)
{
glVertex3f(X + R * cos(t), Y + R * sin(t), 0.0);
t += 2 * PI / N;
}
glEnd();
}
void drawStar() {
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBegin(GL_POLYGON);
glVertex3f(15, 51, 0);
glVertex3f(27, 51, 0);
glVertex3f(21, 46, 0);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(21, 56, 0);
glVertex3f(21, 46, 0);
glVertex3f(17, 44, 0);
glEnd();
glBegin(GL_POLYGON);
glVertex3f(21, 56, 0);
glVertex3f(21, 46, 0);
glVertex3f(25, 44, 0);
glEnd();
}
// Drawing routine.
void drawScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//glEnable(GL_DEPTH_TEST);
glColor3ub(190, 190, 190);
for (float i = 0; i < 400; i++) {
float n = i * 0.01;
drawDisc(42.0-n, 50.0, 50.0, 0.0);
i += i * 0.01;
}
glColor3ub(225, 225, 0);
drawDiamond();
glColor3ub(255, 0, 0);
drawCoss();
glColor3ub(65, 105, 225);
drawTriangle();
glColor3ub(205, 104, 57);
drawArrow();
glColor3f(0, 0, 0);
drawPiont(1, 50.0, 50.0, 0.0);
glColor3ub(50, 205, 50);
drawStar();
//glDisable(GL_DEPTH_TEST);
glFlush();
}
// Initialization routine.
void setup(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
} ...Read less