Graphics Primitives - Lecture 3

مقدمة
  • الشابتر ده بيتكلم عن الـ Graphics Primitives (الأشكال الأساسية).
  • هنعرف المفاهيم الهندسية الأساسية زي النقطة والخط والسطح، وبعدين هندخل في تفاصيل رسم الأشكال الأساسية زي الخطوط، الدواير، المضلعات، والمنحنيات في Computer Graphics.

1) Main Concepts of Drawing Shapes

  • قبل ما ندرس ازاي الأشكال بتترسم في الـ Computer Graphics، لازم نفهم المفاهيم الهندسية الأساسية اللي بتوصف الأشكال دي في الـ 2D والـ 3D.

A) Vertex

definition

A vertex (plural: vertices), also called a corner, is a point where two or more line segments meet.

  • الـ Vertex (أو الرأس/الزاوية) هي النقطة اللي بيتقابل فيها خطين أو أكتر.
  • هي اللي بتحدد شكل و هيكل الاشكال الهندسيه.
  • في الـ 2D graphics: الـ vertices بتحدد زوايا المضلع (polygon corners):

  • في الـ 3D graphics: الـ vertices بتحدد زوايا المجسمات (polyhedra corners):

B) Edge

definition

An edge is a line segment connecting two vertices.

  • الـ Edge (أو الضلع) هو الخط اللي بيوصل بين اتنين vertices.

  • في الـ 2D polygon: الـ edges بتمثل الحدود (boundary) بتاعة الشكل.

  • في الـ 3D polyhedron: الـ edge هو خط التقاطع بين وجهين (intersection of two faces).

C) Face

definition

A face is one of the flat surfaces of a solid object.

  • الـ Face (أو الوجه) هو السطح المسطح بتاع المجسم.
  • كل face بيبقى متحوط بـ edges و vertices.
  • في الـ Computer Graphics، كلمة face مرتبطة أكتر بالـ 3D objects.
  • عدد الـ faces بيساعدنا نصنف المجسمات.
  • مثال: الـ tetrahedron (الهرم الرباعي) ليه 4 أوجه مثلثة.

D) Side

  • كلمة Side شائعة في الـ 2D geometry ( side للمثلث أو للمستطيل).
  • لكن في الـ 3D graphics، استخدام كلمة "side" مش دقيق وممكن يعمل لغبطة ambiguous.
  • ممكن حد يقصد بيها edge، وممكن حد تاني يقصد بيها face.
  • عشان الدقة، في الـ 3D بنستخدم Edge أو Face بدل side.

مثال شامل


2) Basic Geometric Objects (Primitives)

definition

Graphics Primitives (or output primitives) are the fundamental geometric elements in computer graphics.

  • الـ Graphics Primitives هي حجر الاساس اللي بنستخدمه عشان نركب صور وأشكال معقدة.
  • أهم الـ primitives دي: Points, Lines, Circles, Ellipses, Polygons, Curves, Text.

A) Points

definition

A point is the most basic geometric primitive. It represents a specific location in 2D or 3D space.

  • الـ Point هي أبسط وحدة.
  • ملهاش لا حجم، ولا طول، ولا مساحة.
  • مجرد مكان location في الـ space، وهي الأساس لباقي الأشكال.
  • طبعا عارفين من قبل كده انها بتتمثل بالطريقة دي:
2D:(x,y)
3D:(x,y,z)

B) Lines

definition

A line in computer graphics is drawn as a finite line segment between two endpoints.

  • الكمبيوتر مش بيعرف يرسم خط ملوش نهاية infinite، عشان كده دايما بيرسم قطعة مستقيمة line segment بين نقطتين ليها بداية ونهاية.

Representation (طرق التمثيل الرياضي للخط)

  • Slope-intercept form:

  • هنا الـ هو "الميل" (Slope)، والـ هي النقطة اللي الخط بيقطع فيها محور الصادات (-intercept).

  • Parametric form:

شرح المعادله:
  • ا P0: نقطة البداية (في الـ 2D بتبقى (x0, y0) وفي الـ 3D بتبقى (x0, y0,z0))

  • ا P1: نقطة النهاية (في الـ 2D بتبقى (x1, y1)وفي الـ 3D بتبقى (x1, y1,z1))

  • ا P1 - P0: الـ direction vector (متجه الاتجاه)

  • ا t: المتغير scalar parameter اللي بيحدد مكان النقطة على الخط.

  • تفسير قيم t

    • اt = 0: إنت واقف عند P0
    • ا 0 < t < ا 1: إنت في حتة بين P0 و P1
    • ا t = 1: إنت وصلت لـ P1
    • ا t < 0: إنت قبل الـ P0
    • ا t > 1: إنت عديت الـ P1
  • ا t(P1 - P0): الحتة دي بتعمل (Scaling) للمتجه. يعني بتطوله أو تقصره حسب قيمة . لو مثلاً ، يبقى إحنا كده جبنا نص المسافة بالظبط.

  • ا P0 + t(P1 - P0): دي الخلاصة، بنجيب المتجه بعد ما حددنا طوله بالـ ونجمعه على نقطة البداية، فيدينا النقطة الجديدة اللي هنرسمها على الخط.

Drawing Algorithms

  1. ا DDA (Digital Differential Analyzer):

    Incrementally computes pixel position along the line.

  • طريقة بتحسب أماكن البيكسلز على طول الخط خطوة بخطوة ورا بعض.
  1. ا خوارزمية (Bresenham's Line Algorithm):

    An efficient integer-based method for rasterizing lines.

  • دي طريقة أذكى وأسرع بكتير، لأنها بتستخدم الأرقام الصحيحة بس (Integer-based) عشان ترسم الخطوط من غير كسور معقدة.

Applications

  • تحديد حواف الأشكال (Outlining shapes).
  • توصيل النقط ببعض في الرسومات البيانية أو المخططات (Connecting nodes).
  • محاكاة المسارات في برامج الفيزيا (زي مثلاً مسار كورة بتترمي).

C) Circles

definition

A circle is the set of points at a fixed distance r (radius) from a center (xc, yc).

  • الدايرة هي مجموعة نقط بتبعد مسافة ثابتة (نصف القطر r) عن المركز.

Representation

  • Implicit equation:
  • هنا الـ هو المركز بتاع الدائرة، والـ هو نصف القطر (Radius).
  • Parametric form:
  • ودي بتجيبلك نقطة نقطة على محيط الدائرة باستخدام الزوايا: , هنا الـ (ثيتا) هي الزاوية، وكل ما بتغير الزاوية (من 0 لـ 360 درجة)، المعادلتين دول بيحسبولك مكان النقطة الجديدة على حدود الدائرة.

Drawing Algorithms

  1. ا Circle equation method:

    Directly uses the implicit equation (inefficient due to floating-point calculation)

  • الطريقة دي بتستخدم المعادلة الرياضية بشكل مباشر، بس يعيبها إنها مش عملية وبطيئة (inefficient) عشان بتعتمد على حسابات الأرقام العشرية والكسور (floating-point calculations).
  1. ا Midpoint Circle Algorithm:

    Efficient inter-based method exploiting symmetry.

  • دي طريقة Efficient لأنها بتعتمد على الأرقام الصحيحة بس (integer-based method)، وبتستغل التماثل (symmetry) بتاع الدائرة عشان ترسمها أسرع.
  1. ا Bresenham's Circle Algorithm:

    Optimized version of the midpoint algorithm

  • دي تعتبر نسخة متطورة ومتحسنة من خوارزمية Midpoint اللي لسه قايلين عليها.

Applications

  • الأيقونات، الزراير، وأي circular UI elements.
  • العجل، المدارات orbits، والحركة الدائرية في الـ animation.

الكلام الي جاي لحد الـ text ملغي حسب كلام زمايلنا بس هشرحه احتياطي

D) Ellipses

definition

An ellipse is a stretched/compressed circle, defined as the locus of points whose sum of distances from two foci is constant.

  • عبارة عن دائرة بس ممطوطة (stretched) أو مضغوطة (compressed).
  • بالتعريف الرياضي: هو مجموعة من النقط، لو جمعت المسافة بين أي نقطة فيهم وبين نقطتين ثابتين (بنسميهم بؤرتين أو focal points) هيطلعلك دايماً رقم ثابت.

Representation

  • Implicit equation:

  • هنا الـ هو مركز الشكل. والـ والـ هما أنصاف الأقطار للمحاور (واحد اسمه المحور الأكبر semi-major والتاني المحور الأصغر semi-minor).

  • Parametric form:

Drawing Algorithms

  • بتترسم بطرق شبه رسم الدايرة بالظبط، بالاعتماد على التماثل symmetry والـ incremental methods.

Applications

  • العدسات lenses والمدارات البيضاوية.
  • اللوجوهات والتصميمات اللي فيها حواف مدورة.

E) Polygons

definition

A polygon is a closed, non-self-intersecting shape formed by connecting line segments (edges) through vertices.

  • المضلع هو شكل مقفول متكون من خطوط متوصلة ببعضها عن طريق vertices ومفيش خطوط بتقطع بعضها.

Types of Polygons

  1. Convex polygon (مضلع محدب):
    • كل الزوايا الداخلية أقل من 180 درجة.
    • الـ Algorithms بتبقى أسرع وأسهل بكتير مع النوع ده.
  2. Concave polygon (مضلع مقعر):
    • فيه على الأقل زاوية داخلية واحدة أكبر من 180 درجة.

  • في الكمبيوتر الجرافيكس، الخوارزميات بتحب يتعاملوا مع المضلعات المحدبة (Convex) أكتر لأنها أسهل وأسرع في الحسابات من المضلعات المقعرة.

Representation

  • بيتمثل بلستة مترتبة عباره عن نقط Ordered list of vertices:
    [(x1, y1), (x2, y2), ...]
  • ممكن يترسم فاضي من جوه outlined أو متلون filled.

Drawing Algorithms

  1. ا (Scanline Fill Algorithm):

    Used to fill polygons with color.

  • دي طريقة بتستخدم عشان نملى المضلعات بالألوان سطر بسطر.
  1. ا (Boundary Fill Algorithm):

    Starts at a seed point and fills until it reaches the boundary. it is mainly used for simple , closed shapes.

  • دي بتبدأ من نقطة معينة جوه الشكل (اسمها seed point) وتفضل تلون لحد ما تخبط في حدود الشكل من بره. الطريقة دي بنستخدمها مع الأشكال البسيطة المقفولة.

Applications

  • الخرايط Maps والمناطق 2D.
  • الأسطح Surfaces في الـ 3D modeling.
  • أشكال التضاريس والمباني.

F) Curves

definition

A curve is a smooth continuous geometric object that may not be straight.

  • المنحنى هو شكل هندسي ناعم ومستمر بس مش خط مستقيم.

Types of Curves

  1. Bezier curves:
  • المنحنى بيبدأ من أول نقطة تحكم، وبينتهي عند اخر نقطة تحكم، لكن مش شرط إنه يعدي على النقط اللي في النص. النقط اللي في النص دي وظيفتها إنها تشد او تخلي المنحنى ييجي ناحيتها عشان تديله شكله، يعني أماكن النقط دي هي اللي بتأثر على شكل المنحنى النهائي.

  • درجة المنحنى (Bezier degree) بتتحدد بعدد النقط:

    • نقطتين (linear Bezier): هيطلع منحنى خطي (يعني خط مستقيم).
    • 3 نقط (quadratic Bezier): هيطلعلك منحنى تربيعي.
    • 4 نقط (cubic Bezier): هيطلعلك منحنى تكعيبي، وده أكتر نوع مستخدم.
  1. Splines:
    • منحنيات متقطعة بس متوصلة بنعومة Piecewise curves.
    • بتتمثل عن طريق حاجة اسمها knot vectors و basis functions.

Representation

  1. منحنيات بيزيير (Bezier Curve): المعادلة بتاعتها شكلها يخض بس فكرتها بسيطة:

  • الـ دي هي نقط التحكم اللي اتكلمنا عليها من شوية، والـ دي حاجة في الرياضة اسمها متعددات حدود بيرنشتاين (Bernstein polynomials)، ودي الدالة اللي بتحسب قوة تأثير كل نقطة تحكم على المنحنى عشان تطلعه ناعم.
  1. منحنيات الـ Splines: الكمبيوتر بيعرفها عن طريق حاجة اسمها "متجهات العقد" (knot vectors) ودوال أساسية (basis functions). دي ببساطة الأدوات الرياضية اللي بتخلي حتت المنحنى تلزق في بعضها من غير ما يبان أي تكسير.

Applications

  • المسارات الناعمة Smooth paths.
  • الأشكال العضوية Organic shapes في الرسم والأنيميشن.

G) Text

definition

Text is a graphical primitive used to display alphanumeric characters and symbols on screen.

  • النص هو primitive زيه زي أي شكل بنستخدمه عشان نعرض الحروف والرموز على الشاشة.

Representation

  • أشكال الخطوط (Font styles): (زي serif, sans-serif, monospace).
  • الرموز (Glyphs): شكل الحرف نفسه بيتخزن في الكمبيوتر بطريقتين:
    • يا إما Outlines (فيكتور): يعني متخزن كمعادلات وحدود خارجية، وده مهما كبرته مش بيبكسل.
    • أو Bitmaps: متخزن كصورة مكونة من بيكسلات (مربعات صغيرة).

Rendering Concepts

  • إزاي بنرسمه على الشاشة ؟ (Rendering)

    • عملية الـ Rasterization: خدنا العملية دي قبل كده ولو مش فاكر فدي العملية اللي بنحول فيها شكل الحرف (اللي متخزن كمعادلات) لبيكسلات حقيقية عشان الشاشة تقدر تعرضه.
    • تنعيم الحواف (Anti-aliasing): لما بنحول الحرف لبيكسلات ( حواف الحرف بتبقى jagged. التقنية دي بتعمل تنعيم للحواف دي عشان الحرف يبان ناعم وسلس.

Applications

  • الـ Labels والـ captions.
  • النصوص الديناميكية في الألعاب والبرامج.

3) Quick Recap Table

العنصر (Primitive) وصفه (Description) بنستخدمه في إيه (Applications)
النقطة (Point) مكان في الفراغ. تحديد الرؤوس، وتمثيل البيكسل.
الخط (Line) مسار مستقيم بين نقطتين. تحديد الحواف، التوصيلات، ومسارات الحركة.
الدائرة (Circle) نقط على مسافات متساوية من المركز. الأيقونات، الزراير، والحركة الدائرية.
البيضاوي (Ellipse) دائرة ممطوطة أو مضغوطة. الأشكال البيضاوية، المدارات، والتصميمات الفنية.
المضلع (Polygon) شكل مقفول ليه رؤوس وحواف. الخرائط، النماذج ثلاثية الأبعاد (3D Modeling)، والتصميم المعماري.
المنحنى (Curve) خط ناعم ومتصل. مسارات الحركة، الأشكال العضوية، والانيميشن.
النص (Text) حروف وأرقام. العناوين، الشروحات، والمحتوى المتغير.

4) ملخص المحاضرة

كده خلصنا المحاضره

اتكلمنا في المحاضره دي عن Graphics Primitives (الأشكال الأساسية في الـ Computer Graphics) وعرفنا المفاهيم الهندسية الأساسية: Vertex (النقطة اللي بتتقابل فيها الخطوط)، Edge (الخط اللي بيوصل بين Vertices)، Face (السطح المسطح للمجسم)، و Side (مصطلح 2D مش دقيق في 3D).

وبعد كده استعرضنا كل Primitive:

  • Point - أبسط وحدة، مجرد مكان في الفراغ
  • Line - قطعة مستقيمة بين نقطتين، وليها طرق تمثيل (Slope-Intercept و Parametric)
  • Circle - مجموعة نقط على مسافة ثابتة r من المركز
  • Ellipse - دائرة ممطوطة
  • Polygon - شكل مقفول من خطوط (Convex و Concave)
  • Curve - منحنيات ناعمة (Bezier و Splines)
  • Text - حروف ورموز (Fonts و Glyphs)

وعرفنا خوارزميات الرسم لكل شكل زي DDA و Bresenham للخطوط، و Midpoint و Bresenham للدواير، و Scanline و Boundary Fill للمضلعات.