الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أمثلة وتطبيقات على " عمل ساعة " في Opengl

مثبّت
بدأه Abdullah.Alshammeri في 15 ديسمبر 2008 · 21 رد · 16,254 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ,

هذه مجموعة من الامثلة والتطبيقات (سيتم شرحها بعد أيام في هذا الموضوع ) لعمل ساعة في OpenGL , حيث أنه يوجد عشرات الاسئلة التي تسأل عن هذا الموضوع بالرغم من أنه ليس بتلك الصعوبة , ولا يحتاج لمهارة لحله ,

المثال الأول : عمل ساعة الكترونية :

post-42837-1229354556_thumb.jpg

المرفقات .

GL_Clock.zip

المثال الثاني : عمل ساعة عقربية ( يعني فيها عقارب : ) )

post-42837-1229354581_thumb.jpg

المرفقات .

GL_Clock2.zip

يحوي الكود على شرح لبعض الاسطر , وسأتكلم عن باقي النقاط التي قد تحتاج الى شرح مع طرح مزيد من الامثلة في وقت لاحق ان شاء الله لانه لا يوجد لدي الوقت الكافي الان

- يجب ان تراجع أساسيات OpenGL ,

و السلام عليكــم

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

وعليكــم السـلام ورحمة الله وبركاتـه..

الله يسعدكـ ويوفقكـ يارب ،،

سويت الرن وطلع مضبوط باقي بشوف الكود ،،

وأستحمل الأسئله لو ما فهمت ،، الله يعينك

.. ^_^ ..

#3

يالشمري يالشمري،،

عندي سؤال يمكن يكون سخيف بس جنني^_^

المهم،،

أبي أعرف كيف أوقف عمل فنكشن الـ Timer

أتوقع لما تكون قيمة الـ Val =-1 صح ؟

طيب كيف أخليها تشتغل وبعد فتره أوقفها ؟

أتمنى ترد علي بدري ،، وشكراً لكـ ..

#4

خلااااااص ،، أدري اني إزعااااج ^_^

بس خلاص خلصت كودي وطلع مضبوووط ..

إذا تقيمة على كودي بنزله تشوفه ،، أخاف أنزله الحين أخذ زيرو بكره^_^

يلا سي يو :happy: ..

#5

اعتذر عن التأخير , لكن النت عندي أزمة ,

وموفقين ان شاء الله ,

تم تعديل هذه المشاركة بواسطة الشمري في 21 ديسمبر 2008 في 20:41

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

السلام عليكم ورحمة الله وبركاته

مساك الله بالخير يالشمري

اسعدك الله ووفقك لكل خير

صراااحه البرنامج سهل ورائع

وطبقته لكن فيه بعض الدوال لا اعرفها اذا كان من الممكن شرح مبسط وتقول ايش عملها

الله يعطيك العافيه

مثل ::

#include <sstream>

using namespace std;

هذا وش يسوي

________________________________

void changeSize(int w, int h)

{

glViewport(0, 0, w, h);

if(h == 0)

h = 1;

float ratio = 1.0f * w / h;

_____________________________

المتغير w شنو عمله بالضبط

الله يجزاكـ الف خير

انتظر الرد

#7
اقتباس
#include <sstream>

using Namespace std;

هذا الملف الرأسي’ الذي يحوي على كلاس لتحويل الارقام الى نص حتى نطبعه على الشاشة

glViewport(0, 0, w, h);
if(h == 0)

هذه دالة معروفة في OpenGL وأساسية .. نحدد ابعاد منفذ الرؤية .. في مثالنا .. النافذة تبدأ من يسار-أسفل النافذة الى طول النافذة وهو h و عرض النافذة وهو W

هذا درس يشرح بالتفصيل مفهوم منفذ الرؤية

/index.php?showtopic=134790

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#8

الله يجزاكـ الف خيررررررر

وسعدكـ يارررب

وضح لي كل شيء

#9

السلام عليكم ورحمة الله

بغيت أسألك يالشمري عن طريقة تحويل الثواني إلى زاوية بالستيني

ليش طرحنا 15 بعدين ضربنا بـسالب 6؟؟

الله يوفقك ويجزاك كل خير..

#10

هذا ما خطر ببالي أثناء كتابة البرنامج ,

الفكرة هي بايجاد معادلة للتحويل من دائرة الوحدة الى الساعة المعروفة .. فأنا أريد أن تكون الزاوية صفر تقابل الثانية( 00) .. انظر للصورة ..

post-42837-1232919484_thumb.jpg

جرب ان تلغي المعادلة .. عندها .. سيبدأ عقرب الدقائق من الدقيقة 15 وليس الدقيقة صفر ... ونفس الكلام مع الثواني ..

كما أنه من الممكن أن يسير العقرب عكس اتجاه عقارب الساعة حسب دائرة الوحدة ذلك اضرب في سالب ..

حاول تضرب في 6 بدل من -6 وانظر ماذا يحصل .. الخ

تم تعديل هذه المشاركة بواسطة الشمري في 26 يناير 2009 في 00:41

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#11

مشكور جدا أخي العزيز

وجزاك الله خيرا

ودعواتي القلبية الصادقة لك بالتوفيق الدائم إن شاء الله

#12

الله يجزيك الخير أخي

بارك الله فيك

اريد أن أسألك بالنسبة لتغيير لون عثرب الثواني بشكل عشوائي بعد كل دقيقة

هذا كود الساعة الذي كتبته مع اضافة ما قد نحتاجه لتغيير لون العقرب

و لكن التغيير لا يحدث عند التطبيق

اقتباس

glLineWidth(1);

glLoadIdentity();

glColor3f(r,g,b);

glBegin(GL_LINES);

glVertex2f(0,0);

glVertex2f(xs,ys);

glEnd();

glLineWidth(3);

glLoadIdentity();

glColor3f(1,1,1);

glBegin(GL_LINES);

glVertex2f(0,0);

glVertex2f(xm,ym);

if(r>0&&r<1)

{

r= rand() % 1;

srand(time(0));

g=rand()%1;

srand(time(0));

b=rand()%1;

}

glEnd();

glLineWidth(5);

glLoadIdentity();

glColor3f(1,1,1);

glBegin(GL_LINES);

glVertex2f(0,0);

glVertex2f(xh,yh);

glEnd();

glutSwapBuffers();

}

الله يجزيك الخير أخي

لو سمحت أنا بنتظر الرد اليوم كموعد نهائي لتسليم ما طلب مني

الله يجزيك الخير

#13

لو سمحت أخي أريد ما هي المشكلة الاساسية بالكود المضاف حتى لم يتم المطلوب

تغير لون عقرب الثواني كل دقيقة

الله يجزيك الخير أخي

#14

كل دقيقة ، يعني أن الثواني تساوي ( 1 ) .

لذلك وبوضع هذا الشرط ،

	if(se == 1)
	{
		srand(time(NULL));
		r = rand()%255;
		srand(r);
		g = rand()%255;
		srand(g);
		b = rand()%255;

	}

سيتم المطلوب ، بعد تطبيق الالوان ..

بالمرفقات البرنامج ، بعد التعديل .

GL_Clock2.zip

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#15

أخي جزاك الله كل خير

تقبل الله منك

جعله الله في ميزان حسناتك

بس لو سمحت ليش قسمنا rand() على 255

الله يجزيك الخير

#16

هذا رمز خارج القسمة % .

والهدف ايجاد عدد عشوائي من صفر الى 255 .

حيث كل قناة لونية تبدأ من صفر الى 255 ، أو من صفر إلى 1 ، حسب رغبتك .

أنا اخترت من صفر الى 255 ، لانها تعطيني كم خيارات أكبر عند توليد عدد عشوائي .

الالوان عموما تتكون من R G B وكل قناة .. لونية لها بايت واحد ، عادةً ، ( ممكن أكثر أو أقل ، حسب المكتبة الرسومية والدالة المستخدمة ) .

تم تعديل هذه المشاركة بواسطة الشمري في 6 ديسمبر 2009 في 01:02

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#17

لو سمحت عندك اي فكرة ليش لما اشغل البرنامج يطلعلي error

unable to open include file 'SSTREAM.h'

و

Namespace name expected(14,16)

و

(151,6)Qualifier 'std' is not a class or namespace name

و

statment missing ; (151,8)

و

undefined symbol 's'(151,7)

انا استخدم برنامج borland c++ version 5.0

شكرا.

#18
Nassobe كتب:

لو سمحت عندك اي فكرة ليش لما اشغل البرنامج يطلعلي error

unable to open include file 'SSTREAM.h'

و

Namespace name expected(14,16)

و

(151,6)Qualifier 'std' is not a class or namespace name

و

statment missing ; (151,8)

و

undefined symbol 's'(151,7)

انا استخدم برنامج borland c++ version 5.0

شكرا.

قد لايكون المترجم الذي تستخدمه يدعم " مكتبات السي بلس بلس القياسية " ، لذلك ، فأفضل حل هو أن تستخدم مترجم حديث بمكتبات قياسية مثل :

Visual C++ 2008 Express Edition

أو

Code:Blocks .

وهي مجانية ومتميزة .

تم تعديل هذه المشاركة بواسطة الشمري في 17 ديسمبر 2009 في 21:02

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#19

السلام عليكمأنا طبقت المثال و لكن لم يظهر عندي الأرقام و النقط ...فقط تظهر العقارب و بشكل كبير بدون إي نقاط

أرجو منك الحل

#20

الغالي عبدالله .. تم ارسال رسالة خاصة لك يااااربت تتطلع عليها للاهمية

يعطيك العافية ،،

#21

يا اخوان انا بدي مساعده ضروري اليوم لانه عندي تسليم للوضيفة يوم الاثنين بدي كود open gl

يبرمج برمجية الرسام

بحيث يكون في شريط ادوات بسيط (دائره ,مربع ومثلث وخط و polygon , واداة لتعبأه باللون

بحيث اذا كبسنا بمساحة الرسم كبستين مثلا لتحديد نق الدائره يرسم الدائره على هذا الاساس وهو مش مثل الرسام العادي احنا نرسم الدائره, هون احنا بدنا نحدد نق ومثلا للخط احنا بدنا نحدد نقطة البدايه والنهايه ,وبالنسبه لأداة التعبأه نكبس عليها ثم نحدد اللون من مستطيل الالوان ونعبأ به الشكل

وبالنسبه للملفات الي بعثتهم مشكور كثير وإن شاء الله رح استفيد منهم

#22

هل ممكن اضافة صوره كخلفية - لكي يتحسن شكل الساعة؟

مواضيع مشابهة