Professional Documents
Culture Documents
الرسم بالحاسوب
Computer Graphics
خريف 7102-7102
هدف المقرر
يهدف هذا المقرر إلى تعريف الطالب بأساسيات الرسم بالحاسوب .Computer graphics
والهدف الرئيسي هو تعريف الطالب بأهم الخوارزميات المستخدمة إلظهار البيانات بشكل مرئي
على الحاسوب.
متطلبات المقرر
الموضوع م
مقدمة عن الرسم بالحاسوب .0
رسم األشكال األساسية :خوارزميات رسم الخطوط Line Drawing algorithm .7
رسم األشكال األساسية :خوارزميات رسم الدوائر Circle Drawing Algorithm .8
خوارزميات تعبئة األشكال Filling Algorithm .4
خوارزميات القص Clipping Algorithm .5
التحويالت الهندسية :Transformationsنظام المحاور المتجانسة .6
التحويالت الهندسية ثالثية البعد .2
االسقاط المنظوري والمتعامد Orthogonal and Perspective Projections .2
2
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :1لمحة عامة عن المنهج
الجزء العملي
الموضوع م
مكتبة الرسم OpenGL .0
رسم أشكال ثنائية البعد .7
رسم الدوائر واألشكال المنحنية .8
معالجة الحدث (الفارة ولوحة المفاتيح والحركة) .4
استخدام التحويالت الهندسية .5
الرسوم المتحركة Animation .6
استخدام القوائم .2
توزيع الدرجات
%22 امتحان نصفي نظري
%22 امتحان عملي
%52 واجبات عملية
%02 االمتحان النهائي
واجبات:
تطبيق البكمان الواجب 1
استخدام التحويالت الهندسية لتصميم ساعة تماثلية الواجب 2
تطبيق األسهم الواجب 3
محاكاة بسيطة للعبة سناك snakeمن خالل تصوير جسم الحية على شكل الواجب 4
رأس وجسم .ومع النقر على الفارة يزداد حجم الحية بمقدار ثابت.
التحكم في لون مستطيل بالزيادة والنقصان لدرجات األحمر واألخضر الواجب 5
واألزرق من خالل قائمة منبثقة.
3
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
إن الرسم بالحاسوب هو إحدى أهم مظاهر القدرة الضخمة والفائقة للحاسوب ،والتي أثرت
حياتنا بالكثير من التطبيقات وفي مجاالت مختلفة .ويعنى هذا المجال من علوم الحاسوب بالتعامل
مع الرسوم والصور واألفالم وكافة المجاالت التي تستخدم فيها .ولقد أدى التطور الكبير في
استخدام الرسوم إلى ثورة تقنية هائلة في صناعة الحواسيب بإدخال الرسوم والصور إلى الحاسوب
والذي يسر طريقة استخدام الحاسوب لجميع الناس سواء المتخصصين أو غيرهم بشكل كبير جدًا،
وساعد على زيادة انتشار الحاسوب بحيث أصبح جزء ال يتج أز من حياتنا اليومية ،وأصبحت
الصور والرسومات في الحاسوب جزء رئيسي من نظام التشغيل ومن التطبيقات وكافة البرامج.
أن حاسة البصر لإلنسان هي أهم حواسه ،فاإلنسان يتعامل مع الصور بطريقة أفضل
وأسرع من النصص المكتوبة ومن الكالم المنطوق ،فالصورة خير من ألف كلمة .كما أن الرسوم
تثري القطع النصية لتجعلها أقرب للواقع.
لقد أحدث حاسوب آبل Appleثورة هائلة بإصداره لنظا م التشغيل الماكنتوش Macintoshالذي
امتلك أول واجهة رسومية ،وسمي بصديق المستخدم User Friendlyمما أحدث في تغير باقي
أنظمة التشغيل مثل الويندوز وتحولها من واجهة نصية إلى واجهة رسومية.
كما أن تطور استخدام الحاسوب ساعد على تطور مجاالت كثيرة ومهمة ،وفتح آفاق أوسع
الستخدامات جديدة للحاسوب وسهل استخدام مهام كثيرة ومحاكاة لكثير من العمليات مستحيلة
التطبيق.
0
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
الرسم بالحاسوب هو إنشاء تصويري ألشياء حقيقية أو وهمية من نماذج قائمة على الحاسوب.
وهو تقنية للتواصل والتفاعل مع المعلومات بصورة مرئية .كما يمكن تعريفه بأنه استخدام
الحاسوب لصنع أو إنشاء وعرض الصور.
2
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
6
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
7
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
8
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
أن برامج الرسم والصور هي األداة التي يستخدمها أي فنان ،أو مهندس ،أو مصور ،أو صحفي،
أو مبرمج لبناء وتصميم الرسوم وتحريرها ومعالجتها .وهذه البرامج تحتوي على كافة األدوات
والمستلزمات لتصميم وانشاء رسوم هندسية وألعاب ورسوم حرة بدال من القلم والورقة .كما تحتوي
هذه البرامج على أدوات لتخزين الصور وتعديلها وتغيير حجمها ومعالجتها مثل :دمج الصور
وتلوينها وتغيير ألوانها والتحكم بدرجات اإلضاءة والتباين وغيرها.
يمكن تقسيم البرامج والتطبيقات الخاصة بالرسوم والصور إلى المجاالت التالية:
تتراوح هذه البرامج من بسيطة مثل :برامج الرسم والتلوين لألطفال إلى البرامج األكثر تعقيدا
التخصصية مثل برامج معالجة الصور وانشاء الرسوم االحترافية ،والتصميم الهندسي ،والمعماري
واإلنشائي ،وجميعها تعتمد على العمليات الحسابية والهندسية والفنية مثل تصميم الجسور والمباني
والطائرات والسيارات واألجهزة اإللكترونية والماكينات.
وهي البرامج والتطبيقات المستخدمة في معالجة الصور المختلفة التي تأتي من الكامي ار الرقمية
أو من الماسح الضوئي .وتسمح هذه البرامج بمعالجة الصور وتحريرها والقيام بعمليات مختلفة
9
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
عليها مثل تخزينها وتغيير حجمها ودقة عرضها ودمج الصور وتغيير السطوع واإلضاءة .كما
يمكن تعديل األلوان في الصور لتظهر بغير ألوانها الحقيقية.
وهي برامج حديثة تستخدم تقنيات حديثة مثل النظارات والشاشات الثالثية األبعاد على الجدران،
أجهزة التحسس والفارة الخاصة ،وبعض األدوات التفاعلية المختلفة .وجميع هذه التقنيات معتمدة
على ثالثة أشياء وهي الغمس أو االندماج ،التفاعل ،والتخيل للمستخدم .بحيث تتكامل جميعها
ليشعر المستخدم وكأنه منغمس كليًا في عالم افتراضي جديد يتفاعل معه ويشعر به وكأنها
حقيقة ملموسة.
تستخدم هذه النوعية من البرامج في محاكاة التطبيقات العلمية صعبة التخيل أو التطبيق ،مثل
المختبرات االفتراضية إلجراء التجارب الكيميائية والفيزيائية ،باإلضافة إلى محاكاة قيادة
الطائرات والسيارات والسفن .وأيضا صياغة وتخيل بعض الصور االفتراضية للنجوم والكواكب
والكون التي تأتي بياناتها من الفضاء والتلسكوبات المختلفة.
52
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :0مقدمة عن الرسم بالحاسوب
كما تستخدم هذه البرامج في الطب مثل إجراء الكشوفات والتشخيص واجراء العمليات بواسطة
المناظير واستخدام المسح الم قطعي للمخ ولجسم اإلنسان .كما تستخدم في ألعاب الكمبيوتر
الثنائية والثالثية البعد.
تستخدم رسوم الحاسوب في إنتاج الرسوم المتحركة لألطفال والجماالت التعليمية والعلمية كما
تستخدم في انتاج االعالنات والدعايات واألفالم التسجيلية والدراما.
55
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
ال يخفى على أحد ،أن أجهزة العرض تلعب الدور األساسي في تصميم وتطوير تطبيقات رسومات
الحاسوب الثنائية والثالثية األبعاد ،ويعتمد عليها كليا لمعاينة ما تمت برمجته .سيتم التعرف على
أهم وسائل العرض المستخدمة مع الحاسوب.
يمكن تصنيف شاشات العرض CRTوفقا لطريقة إظهار الصورة إلى نوعين :شاشات العرض
المتجهة Vector displaysوالنقطية .Raster displays
تعتمد في عملها على ذراع إلكتروني electron beamلرسم الخطوط .ويمكن للذراع االنحراف
العش وائي والحركة وفق االحداثي السيني والصادي .ويستخدم هذا االسلوب مع راسم االشارة
.Oscilloscope
52
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
معظم أجهزة العرض الحديثة من هذا النوع .ويمكن تصور الشاشة كمجموعة من الخطوط األفقية،
حيث يتم إضاءة كل خط عند مواضع منفصلة ،لتظهر الشاشة على شكل شبكة raster gridمن
النقاط spotsيسمى كل موضع بكسل .Pixelوإلظهار الصور واألشكال يتم إضاءة شبكة
البكسالت بشكل تتابعي بترتيب مسح raster scan orderكالتالي:
كل حركة من اليسار إلى اليمين تسمى خط المسح .scan lineيتم إيقاف القضيب beamخالل
االنتقال من صف آلخر للبدء من اليسار.
53
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
50
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
تعرف دقة العرض بعدد المواضع المنفصلة على الشاشة ،ويشار إليها
بحاصل ضرب األعمدة والصفوف .Columns×rows
تعرف نسبة الجانب display aspect ratioبأنه النسبة بين الحجم األفقي والحجم العامودي
للشاشة ).(display aspect ratio = horizontal size: vertical size
52
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
توجد تقنيات عرض مختلفة مثل شاشات انبوبة الكاثود CRTوشاشة السائل الكريستال LCD
وغيرها .وتتفاوت هذه التقنيات من حيث جودة الصور وخبرة االستخدام .وسيتم التعرف شاشات
انبوبة الكاثود CRTللتوضيح.
تتكون الشاشة من أنبوبة مفرغة من الهواء ،مصنوعة من الزجاج الشفاف ،ولها طرفين ،الطرف
الكبير يمثل الشاشة ، Screenوهو مطلي من الداخل بطبقة متجانسة من مادة الفسفور ،ويوجد
اآلنود النهائي حول طبقة الفسفور .أما الطرف اآلخر من األنبوبة فيتكون من جزئيين هما :مدفع
االلكترونات Electron gunوملفات تحريك شعاع االلكترونات .Deflection Coils
56
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
يقوم عنصر التسخين بتسخين الكاثود ،فتبدأ االلكترونات بالتحرر من سطح الكاثود وتنطلق في
اتجاه آنود التسريع مرو ار بشبكة التحكم ،نحو آنود التركيز الذي يقوم بتركيز الشعاع وتوجيهه في
شكل شعاع الكترونات منطلق بسرعة هائلة نحو الشاشة .يقع الشعاع المنطلق على الشاشة تحت
تأثير مجال كهرومغناطيسي ناتج عن ملفات تحريك الشعاع األفقية والعمودية التي تتحكم في
زحزحة وتحريك شعاع االلكترونات في شكل خطوط أفقية وعمودية على الشاشة .يصطدم شعاع
االلكترونات المركز والموجه بطبقة الفسفور في نقطة محددة فتصبح مضيئة ،وهذه النقطة هي
البكسل .Pixel
تقوم شبكة التحكم بتحديد عدد االلكترونات وكثافته ضمن الشعاع ،ويتم تغذية شبكة التحكم بإشارة
الفيديو المطلوب عرضها على الشاشة .فإذا كانت إشارة الفيديو صغيرة ،فإن شبكة التحكم تقع
تحت جهد سلبي قليل مما يؤدي إلى انطالق عدد كبير من االلكترونات ،فيكون توهج الشاشة
عالي .أما إذا كانت إشارة الفيديو كبيرة ،فإن شبكة التحكم تقع تحت جهد سلبي أكبر ،مما يؤدي
57
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
إلى منع واعاقة مرور االلكترونات ،وبالتالي تقليل عدد االلكترونات المنطلقة نحو الشاشة ،مما
يجعل النقطة التي يصطدم بها الشعاع معتمة أو أقل توهجا.
يتحرك الشعاع على الشاشة بطريقة المسح الكامل للشاشة بخطوط أفقية تمأل الشاشة رأسيا من
األعلى إلى األسفل .مكونا نقاط متوهجة ومعتمة على الشاشة ،تمثل الصورة.
يمكن للعين البشرية تمييز الصورة إذا التقطتها من بعد معين .لقد تم تحديد البعد األمثل (في حالة
التلفزيون) للمشاهدة وتمييز نقطتين متالصقتين ،وبإضاءة معقولة ،بأقل بعد عن الشاشة بالعالقة
التالية 𝐷/𝐻 ≈ 4:حيث Dالمسافة بين العين والشاشة H ،ارتفاع الشاشة .وبالتالي فإن أقل
مسافة يمكن للمشاهد تمييز صورة على الشاشة هي 𝐷 ≅ 4𝐻 :أما في حالة الحاسوب فإن البعد
األمثل يعتمد على معايير أخرى مثل دقة ونوع الشاشة.
يجب أن تكون الصورة التي تش اهدها العين على الشاشة مستمرة ،وأي حركة ضمن هذه الصور
يجب أن تتم بنعومة بحيث ال نالحظ أي اهتزاز أو تقطع ليبدو المشهد طبيعي .لذلك استغل العلماء
من خاصية هامة للعين البشرية وهي خاصية حفظ الصورة ،Image Persistenceتنشأ هذه
الخاصية نتيجة لوجود األالف من األعصاب البصرية التي تتحفز عند استقبالها للضوء الساقط
عليها فتقوم بإرسال إشارات عبر النهايات العصبية إلى الدماغ الذي يترجم هذه اإلشارات إلى صور
ملونة ثالثية البعد وبقدرة هللا سبحانه وتعالى يستمر هذا التحفيز حتى بعد توقف الضوء الساقط
ولمدة 1/16من الثانية ( .)0.0625 secondأي أن الصورة تظل مطبوعة في النهايات العصبية
للمدة المذكورة.
58
الرسم بالحاسوب Computer Graphics
ا .فاطمة علي المحجوب المحاضرة :7تقنيات عرض الرسومات
من هذه الخاصية وجد العلماء أن معدل مسح وعرض الصور على الشاشة يجب أن يكون أكبر
من 16صورة في الثانية الواحدة حتى تستطيع العين أن تشاهد الصورة كأنها طبيعية ومستمرة
وبدون تقطع .وفي األفالم السينمائية يتم التقاط 24صورة في الثانية للمشهد ،ويتم عرضها بنفس
المعدل أي بسرعة 24صورة في الثانية .وفي بداية ظهور التلفزيون تم استخدام 25إطار صورة
Frameفي الثانية الواحدة للنظام األوروبي و 32إطار صورة في الثانية الواحدة للنظام األمريكي.
ويتم عرض إطار ا لصورة على الشاشة عن طريق مسح الشاشة بشعاع االلكترونات أفقيا ورأسيا
بطول وعرض الشاشة وهذا ما يسمى بمسح الشاشة .Raster
وبالرغم من استخدام 15أو 32إطار في الثانية إال أن الصور كانت تعاني من عدم الوضوح
وقلة الجودة واهتزاز الصور والتقطع في الحركة ووجود ظل أو شبه اهتزاز في الصورة ،لذلك ظهرت
تقنيات مسح جديدة مثل المسح المتداخل interlaced Scanningوالمتتالي Progressive
.Scanning
59
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :8جهاز التحكم في العرض
وهو إحدى المكونات الرئيسية في الحاسوب ،ويطلق عليه بطاقة العرض ،Display Cardأو
بطاقة الفيديو .Video cardتستقبل هذه البطاقة أوامر الرسم Graphics Commandsمن
المعالج وتقوم بمعالجتها وتحويلها إلى إشارات فيديو RGB Syncيتم تغذيتها إلى الشاشة.
22
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :8جهاز التحكم في العرض
ويسمى أيضا بالطرف األمامي .Front Endيقوم معالج الرسوم باستالم أوامر الرسم من المعالج
الرئيسي للحاسوب ،ويقوم بترجمتها إلى أرقام تشير إلى قيمة البكسل في الصورة ،وتحتوي هذه
األرقام على موقع البكسل ودرجة اللون . RGBبعد ذلك يقوم المعالج بإرسال هذه القيم إلى ذاكرة
الصورة النقطية .في السابق كان المعالج الرئيسي للحاسوب هو معالج الرسوم ،فتم استخدام معالج
خاص بالرسوم سمي ) Graphics Processing Unit(GPUمع ذاكرة خاصة به مهمته معالجة
أوامر الرسم التي تأتي من المعالج الرئيسي وارسالها إلى مصفوفة الصورة النقطية ،وهذا ساعد في
تسريع عملية إظهار الصورة على الشاشة والتخفيف من أعباء المعالج الرئيسي ليتمكن من القيام
بمهام أخرى.
ذاكرة الصورة النقطية وتسمى أيضا بمصفوفة البكسالت النقطية .Bitmap Pixels Arrayوهي
قلب جهاز التحكم في العرض ،حيث يتم االحتفاظ بقيمة كل عنصر (أو بكسل )pixelمن
عناصر شاشة العرض على شكل جدول أو مصفوفة.
ويسمى بالطرف الخلفي ،Back Endوهو المسئول عن توليد إشارة الفيديو المطلوبة لتغذية
الشاشة .فهو يقوم بترجمة قيمة البكسالت المخزنة في ذاكرة الصورة النقطية إلى ألوان وتدرجاتها
المناسبة .ومن تم توليد إشارة فيديو مكونة من ثالث إشارات ،RGBوتوليد إشارة المزامنة Sync
Signalتستخدم لتحديد ب داية ونهاية كل حقل وبداية ونهاية كل خط أفقي .وفي كل مرة يتم تحديث
25
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :8جهاز التحكم في العرض
الحقل أو اإلطار يتم قراءة مصفوفة الصورة النقطية وتحويلها إلى إشارات فيديو ثم ترسل هذه
اإلشارات إلى شاشة العرض ،ويتكرر هذا ما بين 62إلى 82مرة في الثانية.
ليتمكن جهاز العرض من إظهار جميع الحروف واألرقام والرموز الخاصة المدخلة من لوحة
المفاتيح على الشاشة ،تم حجز جزء من ذاكرة الصورة النقطية لهذا الغرض ،يسمى بذاكرة األحرف
والرموز .Character-based Frame Bufferوأحيانا تأتي على شكل ذاكرة مستقلة .تتكون
هذه الذاكرة من جزأين:
الجزء األول وهي ذاكرة األحرف والرموز ،وهي عبارة عن مصفوفة تحتوي على رموز آسكي
ASCII codeلجميع الحروف والرموز.
الجزء الثاني وهو مولد أشكال األحرف والرموز ،يقوم بتحديد أشكال الحروف في مصفوفة
البكسالت وذلك بتظليل البكسالت المحددة لتوليد الحروف المطلوبة .وترسل على شكل
مجموعات إلى جهاز توليد إشارات الفيديو.
22
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
تعتبر مكتبة OpenGLأفضل مكتبة للرسم ثالثي األبعاد عالي الدقة ،ومع تطور بطاقات العرض
وسرعة األجهزة بدأت تطرح أيضا كمكتبة للرسم التفاعلي .اضافة لكونها مكتبة مفتوحة وتعمل على
أكثر من منصة ،cross-platformولكنها مكتبة تفتقر لوظائف تتبع لوحة المفاتيح وعمل نوافذ
وقوائم وطباعة نصوص ،ألن هذا خارج أهداف تصميمها ،لهذا جاءت المكتبة .GLUTوهي أيضا
مكتبة مستقلة المنصة ،cross-platformوتقوم بالتعامل مع النوافذ ولوحة المفاتيح والفأرة وغيرها.
وبهذا يكون البرنامج بالكامل مستقل المنصة .cross-platform
وخاصة
ّ المكونات الصلبة في الرسومات
ّ موحدة وسهلة للوصول إلى قدرات
توفير واجهة ّ
الثالثية األبعاد منها.
ّ
كل اإلنجازات
المنصات الصلبة عبر إجبار ّ
ّ إخفاء االختالفات المتواجدة بين شتّى أنواع
المعرفة في المواصفات.
ّ الميزات
المتوافقة على دعم جميع ّ
23
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
البرنامج التطبيقي لديه نموذجه الداخلي الذي يحدد ما الذي يقوم به ،ويرسم الرسوم
باستخدام تسهيالت facilitiesنظام الرسوم ،في حالتنا هذه ،المكتبة .OpenGL
20
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
المستخدم يشاهد الرسومات ،ويستخدم أجهزة اإلدخال مثل الماوس ولوحة المفاتيح
للتفاعل .والمعلومات حول تفاعل المستخدم يتم ارسالها إلى التطبيق ،والذي بدوره يحدد
اإلجراء الذي سيتخذ .وعادة ،يقوم التطبيق بإجراء تغييرات على نموذجه الداخلي،
والذي يؤدي إلى تحديث الرسومات ،لتبدأ حلقة أخرى في دورة التفاعل.
نافدة OpenGLهي مساحة مستطيلة على شاشة جهاز العرض حيث يتم رسم
الرسومات .عادة ما تتوافق نافذة OpenGLبالضبط مع النافذة التي تدار من قبل
مدير النافذة .Manager windowومن الممكن أن يكون هناك نوافذ OpenGL
متعددة نشطة في نفس الوقت على شاشة واحدة.
ينتج الحدث في برنامج OpenGLعندما يقوم المستخدم بتشغيل جهاز إدخال.
ولالستجابة لهذا الحدث ،يجب أن يوفر التطبيق دالة ،functionتعرف باسم دالة
إجابة النداء ،callback functionللتعامل مع هذا الحدث .برنامج OpenGL
يستدعي تلقائيا دالة إجابة النداء ويمرر لها بيانات الحدث.
في الواقع ،برنامج OpenGLال يقوم برسم الرسومات مباشرة في النافذة ،بل يقوم
برسمها في هياكل البيانات ( data structureمصفوفة البكسالت) داخل برنامج
OpenGLوالتي تسمى مخزن اإلطار ،frame-Bufferأو المخزن .Buffer
وبشكل دوري يقوم برنامج OpenGLبنسخ البكسالت من المخزن إلى النافذة.
22
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
المثال التالي يحتوي على أبسط برنامج للرسم يستخدم المكتبة .OpenGLومهمته
إظهار نافذة يمكن استخدامها إلظهار الرسوم ثنائية وثالثية البعد.
26
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
oتنفيذ أي برنامج بلغة Cأو C++يبدأ عند الدلة )( .mainفي برامج الرسم يتم
تضمين هذه الدالة باألوامر التالية:
استدعاء الدالة ;) glutInit (&argc, argvلتهيئة المكتبة .glutويجب البدء
بهذا االستدعاء قبل البدء باستخدام أي دالة من دوال المكتبة .glutالمتغيرين
argc, argvيجب أن تتساوى مع متغيرات دالة التطبيق )(.main
استدعاء الدالة ;)" ، glutCreateWindow ("ex1إلنشاء نافذة OpenGL
لتقديم renderingوالتفاعل ،interactionمع تحديد عنوان النافذة كمتغير
للدالة .المكتبة glutتخصص رقم صحيح لتعريف هذه النافذة windows
،identifierوهي النتيجة التي تقوم الدالة بإرجاعها .ويمكن استخدام رقم
التعريف هذا عندما يحتوي برنامج OpenGLعدة نوافذ للتمييز بينها .بشكل
افتراضي يتم ضبط حجم النافذة sizeالتي يتم انشائها بهذا األمر على
) (300,300بكسل ،أما موضع النافذة positionفهو أعلى يسار الشاشة.
وللتحكم في حجم أو موضع الشاشة يمكن استخدام الدالتين:
)( glutInitWindowSizeأو)(. glutInitWindowPosition
27
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
يوجد اختالف بين دوال إجابة النداء Callbackودوال لغة Cالعادية ،وهذا االختالف
يكمن في أن التطبيق ال يمكنه استدعاء دوال إجابة النداء مباشرة كما يستدعي الدوال
العادية ،بل يقوم برنامج OpenGLباستدعاء هذه الدوال عندما يقرر إنه بحاجة إليها.
في المثال( )1تم استخدام دالة إجابة نداء واحدة وهي األساسية في جميع برامج الرسم.
وهذه الدالة تحتوي على جميع الرسومات التي يجب على OpenGLعرضها على
النافذة .تم استخدام الدالة )( glutDisplayFuncإلخبار OpenGLأيا من دوال
التطبيق يجب استدعائها عند الحاجة لتحديث وانعاش refreshالنافذة لرسم
الرسومات.
الدالة )( glutDisplayFuncتقوم بتسجيل اسم دالة االستدعاء ليتم طلبها عندما
يحتاج OpenGLلعرض أو إعادة عرض محتويات النافذة .وعلى التطبيق أن يحتوي
على دالة استدعاء وهذا ليس اختياريا .ويجب أن تكون دالة االستدعاء ،كما في الدالة
)( ،Displayبالشكل التاليvoid (*func)(void){ } :
الثوابت تكون كلها بأحرف كبيرة يفص للل بين كلماتها الش للرطة الس للفلية _ ،وتبدأ باس للم المكتبة
مثل .GLUT_RGB
أس ل للماء الدوال functionsتبدأ باس ل للم المكتبة بحروف ص ل للغيرة ثم بأحرف اس ل للتهاللية كبيرة وال
يفصل بينها الشرطة السفلية مثلglutInitWindowSize :
يلحق باس ل ل للم الدالة أحيانا البعد dimensionالذي تتعامل معه (اما 2أو 3أو )4ونوعه اما
صل للحيح ، iأو عش ل للري fأو بالدقة المض ل للاعفة ،dمثال ،glVertex2i(int x,int y) :أما
إذا كنا سلنضلع مؤشلر على عنوان اإلحداثيات وليس اإلحداثيات نفسلها فيتم إضلافة الحرف v
28
الرسم بالحاسوب Computer Graphics
المحاضرة :4مكتبة الرسم OpenGL/GLUTأ .فاطمة علي المحجوب
مثال ) glVertex3fv(float *fptrحيث fptrهي مؤش ل ل ل ل للر لمص ل ل ل ل للفوفة arrayبها ثالث
عناصر مثل.float fptr[3]={x,y,z} :
تبدأ أنواع البيانات Data Typeالتي توفرها مكتبة الرسل ل ل للوم المفتوحة باسل ل ل للم المكتبة وبأحرف
كبيرة ثم نوع البيانات بأحرف صغيرة مثالGLfloat :
29
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
الخط Lineهو العنصر األساسي في الرسوم .ويتكون في الواقع من عدد ال نهائي من النقاط
المحصورة بين نقطتي بداية ونهاية الخط ،ولكن عند تمثيله في الصور الرقمية ،ال يمكن إال رسم
مجموعة محددة من البكسالت المنفصلة وبأحجام محددة .ولرسم خط يجب تحديد النقطتين المراد
ربطهما بخط .تهدف هذه المحاضرة للتعرف على أهم ثالث خوارزميات لرسم الخطوط على الشاشة،
وقبل الخوض في خوارزميات الرسم سنجري بعض التمارين لتوضيح طريقة عمل هذه الخوارزميات.
تمرين
.1ارسم باليد على الشكل ( )1الخطوط التي تصل بين أزواج النقاط التالية.
.2ثم استخدم الشكل ( )2لتمثيل الخطوط في الفقرة ( )1على الشاشة ،وتحديد أي بكسل يجب
تلوينها لتمثيل كل خط.
)A. (1, 15) to (8, 15 )B. (3.5, 13.5) to (11.5, 13.5
)C. (1, 6) to (6, 11 )D. (1, 5) to (8, 7
)E. (1, 0) to (7, 4
32
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
االجابة
لرسم الخطوط األفقية والعمودية يمكن ملئ (تلوين) جميع البكسالت بالقرب من نقطتي
النهاية وكل البكسالت المحصورة بينها .ولكن عند رسم الخطوط المائلة ،تظهر مشكلة أيا
من البكسالت يجب ضبطها .set
35
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
عند استخدام طريقة نييف Naïve approachيتم تلوين كل البكسالت التي يمر بها الخط.
فنالحظ ظهور سمك thicknessللخطوط .ويعتمد سمك الخط على الميل.
توجد طريقة أخرى يتم فيها رسم الخط كمستطيل رفيع ،Line as a thin rectangleحيث
يتم ضبط كل البكسالت التي تقع داخل مركز المستطيل .والسؤال هنا :ما هو العرض
المثالي للمستطيل؟
32
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
في هذه الخوارزمية يتم أخذ عينات للخط خالل فترات متساوية ،ويتم ضبط البكسالت األقرب إلى
العينة.
33
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
تركز هذه الخوارزمية على ضمان رسم خط رفيع بدون فراغات ،من خالل أخذ عينات للخط خالل
فترات متساوية.
الخط الذي يميل إلى كونه أفقي أكثر من عمودي ،يتم أخذ عينة خالل كل عمود بين نقطتي
النهاية .اما الخط الذي يميل إلى كونه عمودي أكثر من أفقي ،فيتم أخذ عينة خالل كل صف بين
نقطتي النهاية .أربع حاالت سيتم أخذها في االعتبار.
30
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
تقوم خوارزمية المحلل التفاضلي الرقمي برسم خط بسيط بين النقطتين )p0(x0,y0
و) ،p1(x1,y1بإتباع الخطوات التالية:
𝑥𝑑
= 𝑡𝑛𝑒𝑚𝑒𝑟𝑐𝑛𝑖𝑥 ;
𝑠𝑝𝑒𝑡𝑠)𝑡𝑎𝑜𝑙𝑓(
𝑦𝑑
= 𝑡𝑛𝑒𝑚𝑒𝑟𝑐𝑛𝑖𝑦 ;
𝑠𝑝𝑒𝑡𝑠 )𝑡𝑎𝑜𝑙𝑓(
وضع أو رسم نقطة pixelعند اإلحداثيات ) (x,yمع كل خطوة كالتالي: الخطوة :5
32
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
وهي طريقة أخرى لرسم الخطوط .والميزة الكبيرة في هذه الخوارزمية هي أنها تستخدم األرقام
الصحيحة فقط في الحسابات ،وتتم الحركة من خالل المحور Xخالل فترات موحدة وفي كل خطوة
يتم االختيار ما بين نقطتين مختلفتين .فكما في الشكل التالي ،لالنتقال من الموضع ) (2,3نحتاج
لالختيار ما بين النقطتين ) (3,3أو ) (3,4وبالطبع فإن االختيار األفضل هو للنقطة األقرب إلى
الخط األصلي.
يبين الشكل التالي الحالة عن الموضع ،xk+1المسافة العمودية أعلى الخط ا لرياضي أشير لها بل
،dupوالمسافة أسفل الخط أشير لها .dlow
قيمة اإلحداثي yعند النقطة xk+1يمكن حسابها من الصورة العامة لمعادلة الخط المستقيم:
𝑏 𝑦 = 𝑚(𝑥𝑘 + 1) +
36
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
يمكن استخدام هاتين المعادلتين التخاذ قرار تحديد النقطة األقرب للخط الحقيقي .هذا القرار يعتمد
على الفرق بين المسافتين dupو dlowكالتالي:
بالتعويض عن m=dy/dx
𝑦𝑑
𝑑𝑥(𝑑𝑙𝑜𝑤 − 𝑑𝑢𝑝 ) = 𝑑𝑥(2 )(𝑥 + 1) − 2𝑦𝑘 + 2𝑏 − 1
𝑘 𝑥𝑑
)𝑑𝑥(𝑑𝑙𝑜𝑤 − 𝑑𝑢𝑝 ) = 2𝑑𝑦. 𝑥𝑘 − 2𝑑𝑥. 𝑦𝑘 + 2𝑑𝑦 + 𝑑𝑥(2𝑏 − 1
إشارة المتغير Pkتشير إلى قيمة 𝑝𝑢𝑑 .𝑑𝑙𝑜𝑤 −فإذا كانت سالبة فسيتم اختيار النقطة السفلية
أما إذا كانت موجبة فيتم اختيار النقطة العلوية .تذكر أن الحركة تتم على طول المحور Xبخطوات
موحدة ،وبالتالي يتم إجراء كل لحسابات بأرقام صحيحة غير عشرية .في الخطوة k+1ومتغير
القرار يحسب بالمعادلة:
وألن xk+1=xk+1إذن:
37
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
من خالل الحسابات السابقة ،يمكن تلخيص خوارزمية بريزنهام في حالة ميل الخط m<1في
الخطوات التالية:
الخطوة :1إدخال إحداثيات النقطتين ،P0،P1بحيث يحتفظ المتغير P0بالقيمة التي في جهة
اليسار.
الخطوة :2ارسم النقطة ).(x0,y0
الخطوة :3احسب قيمة كال من (2dy-2dx), 2dy, dx, dyتم احسب قيمة البارامتر Pk
االبتدائية من المعادلة:
الخطوة :4عند كل قيمة Xkعلى طول الخط ،إبدأ من ،k=0وقم بإجراء االختبار التالي:
If pk < 0 then the next point to plot is (xk+1, yk) and 𝑝𝑘+1 = 𝑝𝑘 +
𝑦𝑑2
Otherwise, 𝑥𝑑𝑝𝑘+1 = 𝑝𝑘 + 2𝑑𝑦 − 2
الخطوة :5أعد تكرار الخطوة 4حتى ) (dx-1مرة.
في حالة أن ميل الخط ،m>1يمكن تكرار الحسابات السابقة إليجاد قيمة ،Pkوستتحصل على
نتائج متشابهة ،فقط استبدل المتغيرين x,yمع بعض.
وهي تحسين لخوارزمية بريزنهام تم تعديلها من قبل .Pitteway and Van Akenبافتراض أنه
تم وضع النقطة Pعند اإلحداثيات ) (x,yوأن ميل الخط المراد رسمه هو Kحيث .0≤k≤1القرار
المطلوب اتخاذه هو االختيار بين الموضعين Eأو .Nويتم اختيار النقطة األقرب لنقطة التقاطع
.Q
38
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :5خوارزميات رسم الخط
لتحقيق ذلك ،يتم أوال حساب نقطة المنتصف ) .M(x+1,y+1/2فإذا كانت نقطة التقاطع Q
أسفل النقطة Mيتم اختيار النقطة Eواال فاالختيار يقع على النقطة .Nولتفحص هذا ،نحتاج
إلى استخدام المعادلة الضمنية للخط المستقيم وهي كالتالي:
𝑦 𝑓 (𝑥, 𝑦) = 𝑚𝑥 + 𝑏 −
في حالة القيمة الموجبة لميل الخط mعند النقطة المعطاة X:
39
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :6خوارزميات رسم الدائرة
إن رسم الدوائر على الشاشة أكثر تعقيدا بقليل من رسم الخطوط .من أشهر الخوارزميات
المستخدمة لرسم الدوائر هما خوارزمية بريزنهام وخوارزمية نقطة المنتصف .هاتان
الخوارزميتان تستندان إلى فكرة إيجاد النقطتان المتتاليتان الالزمة لرسم الدائرة .وسيتم توضيح
ذلك فيما يلي :معادلة الدائرة هي ،𝑥 2 + 𝑦 2 = 𝑟 2 :حيث rهو نصف قطر الدائرة .يمكن
االستفادة من الشكل المتماثل للدائرة في اجراء الحسابات على ثمن واحد من الدائرة واستنتاج
النقاط المنارة في باقي األثمان.
ال يمكن عرض دائرة متصلة على شاشة نقطية .لذلك علينا اختيار موضع البكسل األقرب
إلكمال رسم القوس .من خالل الشكل التالي ،يمكنك مشاهدة موضع البكسل ) (x,yواألن
نحتاج لتحديد أين نضع البكسل التالية واالختيار ما بين N(x+1,y) :أو ).S(x+1,y-1
02
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :6خوارزميات رسم الدائرة
خطوات الخوارزمية:
الخطوة :1أدخل إحداثيات مركز الدائرة ونصف قطرها واحفظها في المتغيرات x,y,rعلى
التوالي .وضع .P=0, Q=R
الخطوة :2اجعل متغير القرار .d=3-2R
الخطوة :3كرر الخطوات التالية حتى الخطوة 8طالما .x<y
الخطوة :4استدعي الدالة ).DrawCircle(x,y,p,q
الخطوة :5اجعل .P=P+1
الخطوة :6إذا كانت d<0فإن d=d+4*x+6واال:
الخطوة :7اضبط y=y+1و .d=d+4(x-y)+10
الخطوة :8استدعي الدالة ).DrawCircle(x,y,p,q
05
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :6خوارزميات رسم الدائرة
الخطوة :1أدخل نصف قطر الدائرة ،rواحداثيات مركز الدائرة ) .(xc,ycوحدد أول نقطة
تقع على محيط الدائرة والتي إحداثياتها ).(x0,y0)=(0,r
الخطوة :2احسب القيمة االبتدائية للمتغير PkوهيP0=5/4-r :
02
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :6خوارزميات رسم الدائرة
03
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2خوارزميات تعبئة المضلعات
المضلع عبارة عن مجموعة مرتبة من الرؤوس ،كما في الشكل أدناه .ولتعبئة مضلع بلون ما،
نحتاج إلى تحديد البكسالت التي تقع على محيط المضلع ،والبكسالت الموجودة داخله .في هذه
المحاضرة سنرى كيف يمكننا تعبئة المضلعات باستخدام تقنيات مختلفة.
تعمل هذه الخوارزمية بمد خط المسح Scan Lineحتى يتقاطع مع حواف المضلع .تم يتم
تعبئة النقاط بين زوجين متقاطعين باللون المطلوب .كما في الشكل التالي.
00
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2خوارزميات تعبئة المضلعات
قد نرغب أحيانا في تعبئة مضلع بحيث يتم استخدام لون للتعبئة يختلف عن لون المحيط .في هذه
الحالة يتم رسم الكائنات بلون داخلي عوضا عن البحث عن لون المحيط الفعلي ،كما في خوارزمية
تعبئة المحيط .Boundary Filling Algorithmفي خوارزمية التعبئة بالغمر يتم االعتماد على
لون التعبئة Fill Colorبدال من لون المحيط .حيث يتم استبدال اللون الداخلي للكائن بلون التعبئة.
وتتوقف الخوارزمية عندما ال تعد هناك بكسالت داخلية بال لون .وتعتمد هذه الخوارزمية على
طريقة الجارات األربع 4-Connectedأو طريقة الجارات الثمانية .8-Connected
هذه الخوارزمية تقوم بالتقاط نقطة داخل الكائن ،وتبدأ بالتعبئة حتى تالمس حواف الكائن .لتعمل
هذه الخوارزمية يجب أن يكون لون التعبئة ولون المحيط أو الحواف مختلفين .في هذه الخوارزمية
نفترض أن لون المحيط موحد للكائن بالكامل .وهنا أيضا يمكن استخدام طريقة الجارات األربع 4-
Connectedأو طريقة الجارات الثمانية .8-Connected
في هذه الطريقة بعد تعبئة أي بكسل يتم أيضا تعبئة البكسالت األربع المجاورة له والمبينة في
الشكل أدناه .وتستمر هذه العملية حتى الوصول للحواف التي لها لون مخالف.
02
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2خوارزميات تعبئة المضلعات
خطوات الخوارزمية
حدد قيمة البدرة seed pointوهي نقطة إحداثياتها )،(seedx, seedy الخطوة :1
ولون التعبئة fillColorواللون االفتراضي .defualtColor
حدد قيمة لون حواف المضلع. الخطوة :2
إذا كانت البدرة الحالية بلون افتراضي ،قم بتكرار الخطوات 4و 5حتى الخطوة :3
الوصول إلى بكسالت المحيط.
غير قيمة اللون االفتراضي إلى لون التعبئة للبدرة. الخطوة :4
كرر عملية تغيير اللون مع البكسالت األربع المجاورة للبدرة. الخطوة :5
عند استخدام طريقة الجارات األربع تقع مشكلة كالمبينة في الشكل أدناه ،فعند تعبئة المنطقة
الداخلية ال يتم إال تعبئة جزء منها ،في هذه الحالة يكون استخدام طريقة الثماني جارات هي
األفضل.
06
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2خوارزميات تعبئة المضلعات
في هذه الطريقة يتم استخدام البكسالت الثمانية المجاورة للبكسل المعني ،كما هو مبين في
الشكل أدناه .فباإلضافة إلى البكسالت األربع المستخدمة في الطريقة السابقة يتم استخدام
البكسالت الموجودة على قطري المربع المحيط بالبكسل الحالية .وبنفس الطريقة تتم عملية
التعبئة وتستمر حتى الوصول إلى محيط الشكل.
خطوات الخوارزمية
الخطوة :1حدد قيمة البدرة seed pointوهي نقطة إحداثياتها ) ،(seedx, seedyولون
التعبئة fillColorواللون االفتراضي .defualtColor
حدد قيمة لون حواف المضلع. الخطوة :2
إذا كانت البدرة الحالية بلون افتراضي ،قم بتكرار الخطوات 4و 5حتى الخطوة :3
الوصول إلى بكسالت المحيط.
If getpixel(x,y) = defualtColor then repeat step 4 and 5
غير قيمة اللون االفتراضي إلى لون التعبئة للبدرة. الخطوة :4
كرر عملية تغيير اللون مع البكسالت الثمانية المجاورة للبدرة. الخطوة :5
07
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2خوارزميات تعبئة المضلعات
تنجح طريقة الجارات الثمانية في تعبئة الشكل المبين أدناه ،في حين عجز طريقة الجارات األربع
على ذلك.
تعرف هذه الطريقة أيضا بطريقة عد األرقام .Counting Number Methodأثناء تعبئة
المضلعات ،غالبا ما نحتاج إلى تحديد ما إذا كانت بكسل ما تقع داخل الشكل أم خارجه.
توجد طريقتين لمعرفة ذلك هما:
في هذه الطريقة ،يتم عد الحواف المتقاطعة على طول الخط الذي تقع عليه النقطة ) (x,yوممتد
إلى ما النهاية .فإذا كان عدد التقاطعات في الجانبين األيسر واأليمن للنقطة ) (x,yفردي ،فإن
النقطة ) (x,yتقع داخل الشكل المضلع .أما إذا كان عدد التقاطعات زوجي فهي خارج المضلع.
الشكل التالي يوضح هذا المفهوم .حيث نجد أنه عند النقطة ) ،(x,yعدد التقاطعات في الجانب
08
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2خوارزميات تعبئة المضلعات
األيسر هو ،5وعددها في الجانب األيمن . 3في كال الجانبين العدد فردي وبالتالي فإن النقطة
) (x,yتقع داخل المضلع.
تستخدم هذه القاعدة أيضا مع األشكال غير المعقدة ،الختبار ما إذا كانت نقطة معطاة تقع داخل
أم خارج المضلع .لتبسيط هذه الطريقة يمكن استخدام الشكل أدناه واتباع الخطوات التالية:
الخطوة :1قم بوضع اتجاه الحركة على كل الحواف على طول محيط المضلع.
الخطوة :2ارسم خط مسح يمر بالنقطة المراد اختبارها.
الخطوة :3قم بإعطاء القيمة 1للحواف التي تتجه لألعلى ،وقيمة 1-لباقي الحواف.
الخطوة :4افحص قيم اتجاه الحواف التي يمر بها خط المسح واجمعها.
الخطوة :5إذا كان المجموع ال يساوي صفر ،فإن النقطة قيد االختبار تكون نقطة داخلية
interior pointأي تقع داخل المضلع ،واال فهي نقطة خارجية .exterior point
09
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
التحويالت الهندسية هي مجموعة من العمليات التي تطبق على األشكال الهندسية المراد رسمها،
بهدف تغيير موقع أو حجم أو اتجاه الشكل الهندسي .وتتنوع هذه التحويالت طبقا لعدد المحاور
التي تستخدمها إلى تحويالت ثنائية البعد واخرى ثالثية البعد .تتم هذه التحويالت على المحور
السيني أو المحور الصادي إلزاحة Translateأو تدوير Rotateأو تقييس Scalingالشكل
الهندسي المراد رسمه.
إلزاحة شكل ما ،يتم إضافة قيمة اإلزاحة إلى كل رأس من رؤوس الشكل المراد إزاحته ،فيتغير
موقع الشكل .وتختلف طريقة إزاحة األشكال الهندسية حسب نوع الشكل ،فإزاحة خط مستقيم يتطلب
إزاحة رأسيه أي نقطتي البداية والنهاية ،أما إزاحة الدائرة فيتم بإزاحة مركزها ،وفي حالة األشكال
متعددة األضالع أي المضلع Polygonفيجب إزاحة كل رأس من رؤوسه .بإفتراض أن إحداثيات
الرأس هي ) (x,yوالمطلوب إزاحة هذا الرأس بمقدار ) 𝑦𝑡 (𝑡𝑥 ,إلى الموقع ) .(𝑥 ′ , 𝑦 ′المعادلة
التالية تبين عملية النقل .
𝑥𝑡 𝑥 ′ = 𝑥 +
𝑦𝑡 𝑦 ′ = 𝑦 +
لتسهيل عمليات التحويالت سيتم استخدام مصفوفة أحادية البعد يطلق عليها مصفوفة اإلزاحة
Translation Matrixأو متجه اإلزاحة ،Translation Vectorوكما في المعادلة التالية:
لتدوير شكل ما ،يتم تدوير رؤوسه حول محور يسمى محور التدوير Rotation Axisوبزاوية
معينة تسمى زاوية الدوران Rotation Angleوالتي من خاللها يتم تحديد إتجاه الدوران .فالقيمة
22
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
الموجبة تجعل الدوران عكس اتجاه عقارب الساعة Counterclockwiseوالقيمة السالبة تجعل
الدوران بإتجاه عقارب الساعة .Clockwiseأما النقطة التي تجري حولها عملية الدوران فتسمى
نقطة التدوير Rotation pointأو نقطة االرتكاز ،Pivot pointواحداثياتها ) 𝑟𝑦 (𝑥𝑟 ,وغالبا
ما تكون نقطة األصل )).(0,0
يبين الشكل التالي عملية تدوير النقطة ) (x,yحول نقطة األصل وبزاوية لتصبح ) .(𝑥 ′ , 𝑦 ′
ولحساب إحداثيات النقطة بعد التدوير يتم أول تمثيل إحداثيات النقطة ) (x,yاألصلية أي قبل
الدوران باإلحداثيات القطبية بإستخدام المعادالت:
∅𝑠𝑜𝑐𝑟 = 𝑥
∅𝑛𝑖𝑠𝑟 = 𝑦
ولحساب موقع النقطة األصلية الجديد ) ،(𝑥 ′ , 𝑦 ′يتم االستعانة ببعض العالقات المثلثية
Trigonometric Identitiesكما يلي:
25
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
وبإستخدام المصفوفات:
يقصد بالتقييس التحكم في حجم شكل معين .ويتم ذلك بضرب كل رأس من رؤوس الشكل بمعامل
التقييس Scaling factorوالتي سيرمز لها بالرمزين Sx, Syعلى المحورين السيني والصادي.
وبالتالي تصبح احداثيات الرؤوس بعد التقييس كما في المعادالت التالية:
𝑥𝑆 ∗ 𝑥 = 𝑥 ′
𝑦𝑆 ∗ 𝑦 = 𝑦 ′
لتقليص حجم الشكل يجب أن تكون معامالت التقييس أصغر من ،1أما جعلها أكبر من 1فيتم
تكبير الشكل .وليبقى الشكل بحجمه األصلي يتم تسوية معامالت التقييس بالواحد.
نحتاج في كثير من األحيان إلى إجراء سلسلة من التحويالت الهندسية على األشكال في وقت
واحد ،كأن يتم تدويره ثم إزاحته ومن تم تدويره ثم تكبيره ومن ثم إزاحته وهكذا .وهذا يعني دمج عدد
من التحويالت في حركة واحدة .فكان الحل هو إليجاد مصفوفة قادرة على تمثيل كل التحويالت
ال مصفوفة التحويل التالية:
المطلوبة .فمث ً
تعني أن 𝑃′يمتل نتيجة المتجه Pبعد ضربه في المصفوفة M1التي تمثل تدوير أو تقييس
المتجه ومن ثم إضافة المصفوفة M2إليه والتي تمثل عملية إزاحة المتجه .المشكلة هنا أن أبعاد
المصفوفات المختلفة قد تسبب أخطاء وخاصة عند ضرب المصفوفات .فكان الحل في حالة
22
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
األشكال ثنائية البعد هو استخدام مصفوفة مربعة واحدة تتكون من ثالثة أعمدة وثالثة صفوف.
فاالحداثي اإلفتراضي الثالث هو االحداثي المتجانس Homogenous Coordinateوتكون قيمته
مساوية للواحد لتجنب الضرب في الصفر .بإضافة اإلحداثي المتجانس يتم التعامل مع إحداثيات
الرؤوس بالصيغة ).(x,y,1
وباالعتماد على اإلحداثيات المتجانسة سيتم إعادة كتابة كل مصفوفات التحويالت السابقة بالشكل
التالي:
23
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
يستخدم معكوس التحويالت إلعادة األشكال إلى وضعها األصلي .وفيما يلي معكوس مصفوفات
التحويالت الثالثة.
معكوس مصفوفة اإلزاحة Translation Matrix
1 𝑥𝑡0 −
−1
𝑇 = [0 ] 𝑦𝑡1 −
0 0 1
معكوس مصفوفة الدوران Rotation Matrix
𝜃𝑠𝑜𝑐 𝜃𝑛𝑖𝑠 0
−1
𝑅 𝜃𝑛𝑖𝑠= [− 𝜃𝑠𝑜𝑐 ]0
0 0 1
معكوس مصفوفة التقييس Scaling Matrix
1
0 0
𝑥𝑆
= 𝑆 −1 1
0 0
𝑦𝑆
[0 0 ]1
لتدوير شكل حول نقطة غير نقطة األصل ،مثال النقطة ) 𝑟𝑦 ،(𝑥𝑟 ,يتم اتباع الخطوات التالية:
وبذلك فإن مصفوفة الدوران حول النقطة ) 𝑟𝑦 (𝑥𝑟 ,تأخذ الشكل التالي:
20
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
لتصغير أ و تكبير شكل بداللة نقطة ثابتة مثل النقطة ) 𝑓𝑦 ،(𝑥𝑓 ,يتم اتباع الخطوات التالية:
وبذلك فإن مصفوفة التقييس حول النقطة ) 𝑓𝑦 (𝑥𝑓 ,تأخذ الشكل التالي:
22
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
تتم هذه التحويالت على المحاور الثالثة .x, y, z :وبالتالي سيتم توسيع المصفوفة المتجانسة
إلستعاب اإلحداثيات الثالثة باإلضافة إلى االحداثي المتجانس فتصبح رباعية .4x4
يمكن تدوير األشكال الثالثية على إحدى المحاور الثال ثة وبالتالي تنقيم عمليات تحويل التدوير
إلى:
26
الرسم بالحاسوب Computer Graphics
أ .فاطمة علي المحجوب المحاضرة :2التحويالت الهندسية
ال تختلف عن التقييس الثنائي األبعاد اال في إضافة المحور zفي مصفوفة التحويل.
27