
#include <GL/glut.h>
#include <math.h>
const float PI = 22.0 / 7;
float xroot = 0, yroot = 0;
void SetupRC() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 5000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(00, 00, 600,
0, 0, 0,
0, 1, 0);
}
void book() {
// الوجه الأمامي
glColor3f(1, 0, 1);
glBegin(GL_QUADS);
glVertex3f(200, 100, 10);
glVertex3f(-200, 100, 10);
glVertex3f(-200, -100, 10);
glVertex3f(200, -100, 10);
glEnd();
// الوجه الخلفي
glColor3f(.6, 0, 1);
glBegin(GL_QUADS);
glVertex3f(200, 100, -10);
glVertex3f(-200, 100, -10);
glVertex3f(-200, -100, -10);
glVertex3f(200, -100, -10);
glEnd();
// الجانب الأيمن
glColor3f(.6, 0, .7);
glBegin(GL_QUADS);
glVertex3f(200, 100, -10);
glVertex3f(200, 100, 10);
glVertex3f(200, -100, 10);
glVertex3f(200, -100, -10);
glEnd();
// الجانب الأيسر
glColor3f(.6, 0, .7);
glBegin(GL_QUADS);
glVertex3f(-200, 100, -10);
glVertex3f(-200, 100, 10);
glVertex3f(-200, -100, 10);
glVertex3f(-200, -100, -10);
glEnd();
// الوجه العلوي
glColor3f(.6, .3, .7);
glBegin(GL_QUADS);
glVertex3f(200, 100, -10);
glVertex3f(-200, 100, -10);
glVertex3f(-200, 100, 10);
glVertex3f(200, 100, 10);
glEnd();
// الوجه السفلي
glColor3f(1, .3, .7);
glBegin(GL_QUADS);
glVertex3f(200, -100, -10);
glVertex3f(-200, -100, -10);
glVertex3f(-200, -100, 10);
glVertex3f(200, -100, 10);
glEnd();
}
void cylinder() {
glColor3f(0, 1, 0); // لون الأسطوانة أخضر
// جسم الأسطوانة
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 15 * cos(i);
float z = 15 * sin(i);
glVertex3f(x, 101, z); // الارتفاع العلوي (أطول قليلاً من الكتاب)
glVertex3f(x, -101, z); // الارتفاع السفلي
}
glEnd();
// الغطاء العلوي للأسطوانة
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 101, 0);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 15 * cos(i);
float z = 15 * sin(i);
glVertex3f(x, 100, z);
}
glEnd();
// الغطاء السفلي للأسطوانة
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -101, 0);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 15 * cos(i);
float z = 15 * sin(i);
glVertex3f(x, -100, z);
}
glEnd();
}
void Render() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix();
// التحكم بالدوران
glRotatef(xroot, 1, 0, 0);
glRotatef(yroot, 0, 1, 0);
// استدعاء الدوال المطلوبة فقط
book();
cylinder();
glPopMatrix();
glFlush();
}
void specialkey(int key, int x, int y) {
if (key == GLUT_KEY_UP) {
xroot -= 5;
}
if (key == GLUT_KEY_DOWN) {
xroot += 5;
}
if (key == GLUT_KEY_LEFT) {
yroot -= 5;
}
if (key == GLUT_KEY_RIGHT) {
yroot += 5;
}
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 800);
glutCreateWindow("Book & Cylinder");
SetupRC();
glutDisplayFunc(Render);
glutSpecialFunc(specialkey);
glutMainLoop();
}

#include <GL/glut.h>
#include <math.h>
float PI = 3.141592;
float xroot = 0, yroot = 0;
void SetUpRC() {
glClearColor(1, 1, 1, 1);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 5000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 500, 0, 0, 0, 0, 1, 0);
}
void base_1(float height,float radius,float r, float g, float b) {
glColor3f(r, g, b);
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <=2*PI+1; i+=2*PI/100)
{
float x = radius * cos(i);
float z = radius * sin(i);
glVertex3f(x, height, z);
glVertex3f(x, -height, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, height+1, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = radius * cos(i);
float z = radius * sin(i);
glVertex3f(x, height, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -height, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = radius * cos(i);
float z = radius * sin(i);
glVertex3f(x, -height, z);
}
glEnd();
}
void ww() {
glColor3f(.2, .3, 0);
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0,41, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 26.4 * cos(i);
float z = 26.4 * sin(i);
glVertex3f(x, 41, z);
}
glEnd();
}
void RenderScene() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix();
glRotated(xroot, 1, 0, 0);
glRotated(yroot, 0, 1, 0);
//------------------Start
glPushMatrix();
glTranslated(0, -30, 0);
base_1(13,30.4,1,0,1);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
base_1(40,30,0,1,0);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
glTranslated(50, 0, 0);
base_1(20, 5, 1, 0.5, 1);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
glTranslated(35, 25, 0);
glRotated(90, 0, 0, 1);
base_1(20, 5, 1, 0.5, 1);
glPopMatrix();
//------------------END
//-------------------------------------------------------
//------------------Start
glPushMatrix();
glTranslated(35, -25, 0);
glRotated(90, 0, 0, 1);
base_1(20, 5, 1, 0.5, 1);
glPopMatrix();
//------------------END
ww();
glPopMatrix();
glutSwapBuffers();
}
void SpecialKey(int key,int x,int y) {
if (key==GLUT_KEY_UP) {
xroot -= 5;
}
if (key == GLUT_KEY_DOWN) {
xroot += 5;
}
if (key == GLUT_KEY_LEFT) {
yroot -= 5;
}
if (key == GLUT_KEY_RIGHT) {
yroot += 5;
}
glutPostRedisplay();
}
int main(int argc , char**argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(600, 600);
glutCreateWindow("kero");
SetUpRC();
glutDisplayFunc(RenderScene);
glutSpecialFunc(SpecialKey);
glutMainLoop();
return 0;
}

#include <GL/glut.h>
#include <math.h>
const float PI = 22.0 / 7;
float xroot = 0, yroot = 0;
void SetupRC() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 5000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(00, 00, 600,
0, 0, 0,
0, 1, 0);
}
void nail_base() {
glColor3f(0.9, .7, 0.2); // لون ذهبي/نحاسي للقاعدة
// جسم القاعدة
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 15 * cos(i);
float z = 15 * sin(i);
glVertex3f(x, 10, z);
glVertex3f(x, -10, z);
}
glEnd();
// الغطاء العلوي للقاعدة
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 11, 0);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 15 * cos(i);
float z = 15 * sin(i);
glVertex3f(x, 11, z);
}
glEnd();
// الغطاء السفلي للقاعدة
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -11, 0);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 15 * cos(i);
float z = 15 * sin(i);
glVertex3f(x, -11, z);
}
glEnd();
}
void nail_pen() {
glColor3f(0.9, .7, 0.9);
// جسم القلم/العنق
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 10 * cos(i);
float z = 10 * sin(i);
glVertex3f(x, 50, z);
glVertex3f(x, -50, z);
}
glEnd();
// الغطاء العلوي
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 51, 0);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 10 * cos(i);
float z = 10 * sin(i);
glVertex3f(x, 51, z);
}
glEnd();
// الغطاء السفلي
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -51, 0);
for (float i = 0; i <= 2 * PI; i += 2 * PI / 200)
{
float x = 10 * cos(i);
float z = 10 * sin(i);
glVertex3f(x, -51, z);
}
glEnd();
}
void nail_pyramid() {
glColor3f(.7, .7, .7); // لون رمادي للغطاء الهرمي
glBegin(GL_TRIANGLES);
// الوجه الأول
glVertex3f(0, 30, 0); // قمة الهرم
glVertex3f(-12, 0, 12);
glVertex3f(12, 0, 12);
// الوجه الثاني
glVertex3f(0, 30, 0); // قمة الهرم
glVertex3f(-12, 0, -12);
glVertex3f(12, 0, -12);
// الوجه الثالث
glVertex3f(0, 30, 0); // قمة الهرم
glVertex3f(-12, 0, 12);
glVertex3f(-12, 0, -12);
// الوجه الرابع
glVertex3f(0, 30, 0); // قمة الهرم
glVertex3f(12, 0, 12);
glVertex3f(12, 0, -12);
glEnd();
}
void Render() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix(); // حفظ مصفوفة العالم الأصلية
// الدوران العام للمشهد بالكيبورد
glRotatef(xroot, 1, 0, 0);
glRotatef(yroot, 0, 1, 0);
// 1. رسم القاعدة (في الأسفل)
glPushMatrix();
glTranslated(0, -50, 0); // تحريك لأسفل محور Y
nail_base();
glPopMatrix();
// 2. رسم الجسم الأوسط (القلم) - في المنتصف
nail_pen();
// 3. رسم الغطاء الهرمي (في الأعلى)
glPushMatrix();
glTranslated(0, 50, 0); // تحريك لأعلى محور Y ليجلس فوق القلم
nail_pyramid();
glPopMatrix();
glPopMatrix(); // استرجاع المصفوفة الأصلية
glFlush();
}
void specialkey(int key, int x, int y) {
if (key == GLUT_KEY_UP) {
xroot -= 5;
}
if (key == GLUT_KEY_DOWN) {
xroot += 5;
}
if (key == GLUT_KEY_LEFT) {
yroot -= 5;
}
if (key == GLUT_KEY_RIGHT) {
yroot += 5;
}
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 800);
glutCreateWindow("Nail Bottle"); // تغيير اسم النافذة
SetupRC();
glutDisplayFunc(Render);
glutSpecialFunc(specialkey);
glutMainLoop();
}

#include <GL/glut.h>
#include <math.h>
float angleX = 0.0f;
float angleY = 0.0f;
// إعدادات العرض
void SetupRC() {
glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // خلفية بيضاء
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, 1.0, 1.0, 500.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// الكاميرا بعيدة قليلاً لتغطية طول الفرشاة
gluLookAt(0.0, 50.0, 250.0,
0.0, 0.0, 0.0,
0.0, 1.0, 0.0);
}
// --- دالة مساعدة: رسم متوازي مستطيلات (صندوق) ---
// هنستخدمها لرسم اليد والرأس
void DrawBoxHelper(float width, float height, float depth, float r, float g, float b) {
glColor3f(r, g, b);
float w = width / 2.0f;
float h = height / 2.0f;
float d = depth / 2.0f;
glBegin(GL_QUADS);
// الوجه الأمامي
glVertex3f(-w, -h, d); glVertex3f(w, -h, d);
glVertex3f(w, h, d); glVertex3f(-w, h, d);
// الوجه الخلفي
glVertex3f(-w, -h, -d); glVertex3f(-w, h, -d);
glVertex3f(w, h, -d); glVertex3f(w, -h, -d);
// الوجه العلوي
glVertex3f(-w, h, -d); glVertex3f(-w, h, d);
glVertex3f(w, h, d); glVertex3f(w, h, -d);
// الوجه السفلي
glVertex3f(-w, -h, -d); glVertex3f(w, -h, -d);
glVertex3f(w, -h, d); glVertex3f(-w, -h, d);
// الوجه الأيمن
glVertex3f(w, -h, -d); glVertex3f(w, h, -d);
glVertex3f(w, h, d); glVertex3f(w, -h, d);
// الوجه الأيسر
glVertex3f(-w, -h, -d); glVertex3f(-w, -h, d);
glVertex3f(-w, h, d); glVertex3f(-w, h, -d);
glEnd();
}
// --- دالة رسم الشعيرات ---
// عبارة عن خطوط صغيرة فوق سطح معين
void DrawBristles(float areaWidth, float areaDepth, float height) {
glColor3f(0.0f, 0.0f, 0.8f); // أزرق داكن للشعيرات
float stepX = 2.5f; // المسافة بين الشعرة والأخرى
float stepZ = 2.5f;
glBegin(GL_LINES);
// حلقة تكرارية لرسم شبكة من الخطوط
for (float x = -areaWidth / 2 + 2; x <= areaWidth / 2 - 2; x += stepX) {
for (float z = -areaDepth / 2 + 2; z <= areaDepth / 2 - 2; z += stepZ) {
glVertex3f(x, 0.0f, z); // نقطة البداية (على السطح)
glVertex3f(x, height, z); // نقطة النهاية (أعلى)
}
}
glEnd();
}
// رسم الفرشاة بالكامل
void DrawToothbrush() {
// أبعاد الأجزاء
float handleLen = 100.0f;
float handleWidth = 10.0f;
float handleHeight = 5.0f;
float headLen = 30.0f;
float headWidth = 15.0f;
float headHeight = 5.0f;
glPushMatrix();
// توسيط الفرشاة
glTranslatef(-20.0f, 0.0f, 0.0f);
// 1. رسم اليد (Handle) - أزرق
DrawBoxHelper(handleLen, handleHeight, handleWidth, 0.2f, 0.2f, 0.9f);
// 2. رسم الرأس (Head) - أخضر
// نحركه لليمين ليكون متصل بنهاية اليد
glPushMatrix();
float offset = (handleLen / 2.0f) + (headLen / 2.0f);
glTranslatef(offset, 0.0f, 0.0f);
DrawBoxHelper(headLen, headHeight, headWidth, 0.2f, 0.8f, 0.2f);
// 3. رسم الشعيرات فوق الرأس
glPushMatrix();
glTranslatef(0.0f, headHeight / 2.0f, 0.0f); // نطلع لسطح الرأس
DrawBristles(headLen, headWidth, 15.0f); // طول الشعيرة 15
glPopMatrix();
glPopMatrix();
glPopMatrix();
}
// التحكم بالأسهم
void SpecialKeys(int key, int x, int y) {
if (key == GLUT_KEY_UP) angleX -= 5.0f;
if (key == GLUT_KEY_DOWN) angleX += 5.0f;
if (key == GLUT_KEY_LEFT) angleY -= 5.0f;
if (key == GLUT_KEY_RIGHT) angleY += 5.0f;
glutPostRedisplay();
}
// التايمر للأنيميشن
void timer(int val) {
angleY += 2.0f; // دوران عشان يبان الـ 3D
glutPostRedisplay();
glutTimerFunc(33, timer, 1);
}
// دالة الرسم الرئيسية
void RenderScene() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix();
glRotatef(angleX, 1.0, 0.0, 0.0);
glRotatef(angleY, 0.0, 1.0, 0.0);
DrawToothbrush();
glPopMatrix();
glutSwapBuffers();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("Toothbrush - Rectangular Prisms");
SetupRC();
glutDisplayFunc(RenderScene);
glutSpecialFunc(SpecialKeys);
glutTimerFunc(33, timer, 1);
glutMainLoop();
return 0;
}

#include <GL/glut.h>
#include <math.h>
const float PI = 22.0 / 7;
float xroot = 0, yroot = 0;
void SetupRC() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1, 1, 5000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(00, 00, 600,
0, 0, 0,
0, 1, 0);
}
// دالة رسم يد الفرشاة (المقبض)
void hairbrush() {
glColor3f(0, 0, 1); // لون أزرق
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 7.1 * cos(i);
float z = 7.1 * sin(i);
glVertex3f(x, 72, z);
glVertex3f(x, -72, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 73, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 7.1 * cos(i);
float z = 7.1 * sin(i);
glVertex3f(x, 73, z);
}
glEnd();
}
// دالة رسم قاعدة الفرشاة (الجسم البيضاوي)
void brush() {
glColor3f(0, 1, 0); // أخضر من الأعلى
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 50 * cos(i);
float z = 50 * sin(i);
glVertex3f(x, 7.2, z);
glVertex3f(x, -7.2, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 7.2, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 50 * cos(i);
float z = 50 * sin(i);
glVertex3f(x, 7.2, z);
}
glEnd();
glColor3f(0, 1, 1); // سماوي من الأسفل
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -7.2, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 50 * cos(i);
float z = 50 * sin(i);
glVertex3f(x, -7.2, z);
}
glEnd();
}
// دالة رسم سِنة واحدة (شعرة)
void snon() {
glColor3f(0, 0, 1); // أزرق
glBegin(GL_QUAD_STRIP);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 3 * cos(i);
float z = 3 * sin(i);
glVertex3f(x, 25, z);
glVertex3f(x, 0, z);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, 25, 0);
for (float i = 0; i <= 2 * PI + 1; i += 2 * PI / 100)
{
float x = 3 * cos(i);
float z = 3 * sin(i);
glVertex3f(x, 25, z);
}
glEnd();
}
void Render() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix(); // بداية الدوران الكلي للمشهد
glRotatef(xroot, 1, 0, 0);
glRotatef(yroot, 0, 1, 0);
// 1. رسم يد الفرشاة
glPushMatrix();
glTranslated(-140, 0, 0); // إزاحة لليسار
glRotatef(90, 0, 0, 1); // تدوير اليد لتصبح أفقية
hairbrush();
glPopMatrix();
// 2. رسم قاعدة الفرشاة
glPushMatrix();
glScaled(1.5, 1, 1); // تكبير في محور X لعمل الشكل البيضاوي
brush();
glPopMatrix();
// 3. رسم الأسنان (Complex Loop Logic)
// الجزء الأول من الأسنان
int zz = 70;
for (int z = 0; z < 40; z += 10)
{
for (int i = -zz; i <= zz; i += 10)
{
glPushMatrix();
glTranslated(i, 0, z);
snon();
glPopMatrix();
}
zz -= 10; // تقليل العرض كلما اتجهنا للحافة
}
// إعادة تهيئة المتغير للجزء الثاني
zz = 70;
zz -= 10;
// الجزء الثاني من الأسنان (الجهة المقابلة)
for (int z = -10; z > -40; z -= 10)
{
for (int i = -zz; i <= zz; i += 10)
{
glPushMatrix();
glTranslated(i, 0, z);
snon();
glPopMatrix();
}
zz -= 10;
}
glPopMatrix(); // نهاية الدوران الكلي
glFlush();
}
void specialkey(int key, int x, int y) {
if (key == GLUT_KEY_UP) {
xroot -= 5;
}
if (key == GLUT_KEY_DOWN) {
xroot += 5;
}
if (key == GLUT_KEY_LEFT) {
yroot -= 5;
}
if (key == GLUT_KEY_RIGHT) {
yroot += 5;
}
glutPostRedisplay();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 800);
glutCreateWindow("Hairbrush");
SetupRC();
glutDisplayFunc(Render);
glutSpecialFunc(specialkey);
glutMainLoop();
}
Comments