21N14 1021020 NguyenMinhThong LabĐHMT01
21N14 1021020 NguyenMinhThong LabĐHMT01
GLuint dp_list;
dp_list = glGenLists(1);
glNewList(dp_list, GL_COMPILE);
float x = length;
float y = height;
float z = width ;
//Back
glBegin(GL_QUADS);
glVertex3f(0, 0, 0);
glVertex3f(x, 0, 0);
glVertex3f(x, y, 0);
glVertex3f(0, y, 0);
glEnd();
// left
glBegin(GL_QUADS);
glVertex3f(0, 0, 0);
glVertex3f(0, 0, z);
glVertex3f(0, y, z);
glVertex3f(0, y, 0);
glEnd();
//front
glBegin(GL_QUADS);
glVertex3f(0, 0, z);
glVertex3f(0, y, z);
glVertex3f(x, y, z);
glVertex3f(x, 0, z);
glEnd();
//// right
glBegin(GL_QUADS);
glVertex3f(x, 0, z);
glVertex3f(x, 0, 0);
glVertex3f(x, y, 0);
glVertex3f(x, y, z);
glEnd();
//Top
glBegin(GL_QUADS);
glVertex3f(0, y, 0);
glVertex3f(x, y, 0);
glVertex3f(x, y, z);
glVertex3f(0, y, z);
//Bottom
glBegin(GL_QUADS);
glVertex3f(0, 0, 0);
glVertex3f(x, 0, 0);
glVertex3f(x, 0, z);
glVertex3f(0, 0, z);
glEnd();
glEndList();
return dp_list;
bai 2
#include <GL/glut.h>
#include <math.h>
void drawCircle(int xa, int ya, int xb, int yb, int xc, int yc) {
float a = distance(xb,yb,xc,yc);
float b = distance(xa,ya,xc,yc);
float c = distance(xa,ya,xb,yb);
float p = (a+b+c)/2;
glBegin(GL_LINE_LOOP);
glVertex2f(x,y);
glEnd();
// Hàm vẽ scene
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutDisplayFunc(display);
glutMainLoop();
return 0;
bài 3
#include <GL/glut.h>
#include <math.h>
float x = 0, y = R;
glBegin(GL_POINTS);
while (y > x) {
if (d < 0) {
d += 2 * x + 3;
} else {
d += 2 * (x - y) + 5;
y--;
x++;
}
glEnd();
void display()
// Tính tọa độ tâm và bán kính của đường tròn ngoại tiếp
// Vẽ tam giác
glBegin(GL_LINE_LOOP);
glVertex2f(xa, ya);
glVertex2f(xb, yb);
glVertex2f(xc, yc);
glEnd();
glFlush();
glutInit(&argc, argv);
glutInitWindowSize(400, 400);
glutCreateWindow("Circle Circumscribed");
glutDisplayFunc(display);
glutMainLoop();
return 0;
bài 5:
Đỉnh 1: (1, 0)
GLfloat x, y;
GLfloat angle = 72.0 * (M_PI / 180.0); // góc quay 72 độ (đổi sang radian)
glBegin(GL_POLYGON);
glVertex2f(x1, y1);
glVertex2f(x, y);
glEnd();
glBegin(GL_LINE_LOOP);
glVertex2f(x1, y1);
glVertex2f(x, y);
glVertex2f(x, y);
glVertex2f(x, y);
glVertex2f(x1, y1);
glEnd();
bài 6:
#include <GL/glut.h>
#include <math.h>
void drawFlower() {
int i;
float angle;
// Tâm của bông hoa
int petals = 5;
glBegin(GLTRIANGLEFAN);
glVertex2f(centerX, centerY);
angle = i petalAngle;
glEnd();
// Vẽ phiến hoa
radius = 0.1;
angle = i petalAngle;
glBegin(GLTRIANGLEFAN);
centerY + (radius sin((angle + (petalAngle / 2)) MPI / 180.0)) + 0.05 * sin(angle * MPI /
180.0));
glEnd();
void display() {
glClear(GLCOLORBUFFERBIT);
drawFlower();
glFlush();
glMatrixMode(GLPROJECTION);
glLoadIdentity();
gluOrtho2D(0, 1, 0, 1);
glMatrixMode(GLMODELVIEW);
glutInit(&argc, argv);
glutInitDisplayMode(GLUTSINGLE | GLUTRGB);
glutInitWindowSize(500, 500);
glutCreateWindow("Flower");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
Bài 7:
#include <GL/glut.h>
glBegin(GL_QUADS);
glColor3f(r, g, b);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(r, g, b);
glVertex2f(-0.1, 0.2);
glVertex2f(0, -0.15);
glVertex2f(0.1, 0.2);
glVertex2f(-0.3, -0.2);
glVertex2f(0, 0.15);
glVertex2f(0.3, -0.2);
glEnd();
if (withStar) {
drawStar(1, 1, 0);
glPushMatrix();
glTranslatef(0, -4.0 / 15.0, 0); // Move to the bottom of the red stripe
glPopMatrix();
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glFlush();
void init() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 600);
glutCreateWindow("Vietnamese Flag");
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;