Mathematical Foundations of Computer Graphics - Lecture 2

مقدمة
  • المحاضرة دي بتتكلم عن الأساس الرياضي في Computer Graphics، خصوصا الـ Vectors.
  • هنفرق بين Vector, Scalar, و Point، وهنشوف vector notation، components، magnitude، unit vectors، normalization، وازاي نجيب الزاوية بين two vectors باستخدام Dot Product.

1) Introduction to Vectors

  • الـ Vectors من أهم الأدوات الرياضية في Computer Graphics.
  • بتستخدم عشان تمثل حاجات كتير في 2D و 3D زي:
    • ا Positions
    • ا Directions
    • ا Distances
    • ا Transformations

2) What are Vectors?

definition

Vector is a quantity that has both magnitude and direction.

  • الـ Vector ليه حاجتين:
    • Magnitude: الطول أو المقدار.
    • Direction: الاتجاه.
  • بعكس الـ Scalar اللي ليه magnitude بس من غير direction.
  • هندسيا، الـ vector بيتعرض كـ سهم directed line segment:
    • طول السهم بيمثل الـ magnitude (المقدار).
    • اتجاه السهم بيمثل الـ direction (الاتجاه).
Note

Two vectors are equal if they have the same magnitude and direction, regardless of their position.

  • يعني اتنين vectors ممكن يبقوا في مكانين مختلفين، بس يعتبروا equal لو ليهم نفس الطول ونفس الاتجاه.

3) Vector, Scalar and Point

A) Scalar

definition

Scalar is a quantity fully described by a single value, meaning it has magnitude only and no direction.

  • ده مجرد رقم بيوصف كمية ملهاش اتجاه. زي وزنك (70 كيلو)، أو درجة الحرارة (30 درجة). رقم بس من غير اتجاه.

Examples

Scalar Example
Temperature 30°C
Mass 5 kg
Speed 60 km/h
Energy 100 J

B) Vector

  • زي ما قولنا الـ Vectorده بقى عبارة عن رقم (مقدار) + اتجاه
  • غالبا بنمثلها بسهم:
    • طول السهم = magnitude
    • اتجاه السهم = direction
  • بنحتاج notation يوضح إن الكمية دي vector مش scalar ولا point,ومن أشهر طرق كتابة vector:
Form Example
Bold Font
Arrow Above
Underline
Component Form or

Examples

Vector Example
Velocity 60 km north
Force 10 N at 45°
Acceleration 9.8 m/s² downward
Displacement 5 m east

Point

definition

Point represents a fixed position in space and has no direction.

  • دي مجرد مكان ثابت على الشاشة أو في الفراغ (زي إحداثيات و ). ملهاش لا طول ولا اتجاه.

Point Notation

  • الـ points ممكن تتكتب بأكتر من طريقه منهم:
Mathematical Notation
P = (x, y)
P = (x, y, z)
Column Vector Form
P = [ x ]
    [ y ]

P = [ x ]
    [ y ]
    [ z ]

4) Key Differences Between Scalars, Points, and Vectors

Aspect Scalar Point Vector
Represents Magnitude only (Quantity) Fixed position in space Direction and magnitude
Notation Normal/Italic letters (e.g., , ) Parentheses أو labels بسيطة Bold, underlined, arrowed, أو column form
Relation to Origin Independent of space (just a number) Absolute position relative to origin Independent of origin وممكن يتحط في أي مكان
Addition / Subtraction Can be added/subtracted together Points cannot be added Vectors can be added or subtracted
Examples 5, -3.2, 100 P = (x, y) أو P = (x, y, z) v = [x, y] أو v = [x, y, z]

Connection Between Points and Vectors

  • الفرق بين نقطتين P1 و P2 بيطلع vector:
v = P2 - P1
v = (x2 - x1, y2 - y1)
  • النقطة ممكن تعتبر نهاية لـ vector خارج من الـ نقطة الاصل, يعني لو عندك مثلا نقطة P(3,2)نقدر نتخيل إن فيه vector بدأ من الـ origin الي هو (0,0) ووصل للنقطة (3,2), ساعتها هيبقي اسمه Position Vector لأنه بيحدد مكان النقطة بالنسبة للأصل.
بصمجيات
  • Point = مكان.
  • Vector = حركة أو اتجاه من مكان لمكان.

5) Vector Components

إزاي بنكتب المتجه؟ (In 2D & 3D)

  • في الـ 2D (ثنائي الأبعاد): المتجه بيتكون من نقطتين و ، وبيتكتب كده أو بشكل عمودي (مصفوفة).
  • في الـ 3D (ثلاثي الأبعاد): بيزيد عليه المحور التالت اللي هو العمق ، وبيتكتب كده .
  • لو عندك vector: ا v = (4, 3)
  • ده معناه:
    • بيتحرك 4 units على x-axis.
    • و 3 units على y-axis.

2. يعني إيه إسقاط (Projection)؟

  • الـ والـ دول عبارة عن "ضل" المتجه على المحاور.

  • بص على الرسمة اللي تحت .. هتلاقي السهم الأزرق مايل، فبنعمله إسقاط (ننزل منه خطوط متقطعة):

    • ظله على الأرض (المحور الأفقي x) بنسميه .
    • ظله على الحيطة (المحور الرأسي y) بنسميه .

3. إزاي بقي نحسب الـ والـ بالرياضة؟

  • لو إنت معاك طول المتجه نفسه (اللي هو ) والزاوية بتاعته ()، تقدر تجيب مركباته بقوانين حساب المثلثات (الجا والجتا):
    • عشان تجيب الـ : بتضرب الطول في جتا الزاوية.
  • عشان تجيب الـ : بتضرب الطول في جا الزاوية.

6) Vector Magnitude

definition

Vector magnitude is the length of a vector, or how much of the quantity it represents.

  • الـ Magnitude هو طول الـ vector.
  • مثال: vector بيعبر عن السرعه ممكن المقدار بتاعه يبقى 60 km/h.
  • الـ magnitude هو المسافة من الـ origin للنقطة اللي الـ vector بيحددها.
  • القوانين كلها مبني على فكرة قانون فيثاغورث، وعشان تحسب طول أي متجه (وبنرمز لطوله بالرمز أو ) بتجمع مربعات المركبات بتاعته وتحطهم تحت الجذر:

Magnitude in 2D

  • في الـ 2D (بُعدين): لو المتجه ليه حركتين بالعرض والارتفاع :

Magnitude in 3D

  • في الـ 3D (تلات أبعاد): لو زاد عليه العمق :

Magnitude in n-Dimensions

  • القانون العام لأي أبعاد (n-Dimensions): مجموع مربعات كل المركبات اللي عندك تحت الجذر:

Where Magnitude Is Used

  • الـ Normalization
    • لما تحب تثبت اتجاه السهم بس تخلي طوله بيساوي 1 بالظبط (هنعرف يعني ايه كمان شوية).
  • الـ Distance computation
    • عشان تعرف البُعد بين أي نقطتين في اللعبة أو البرنامج.
  • الـLighting & Shading calculations
    • عشان دقة النور بتعتمد على المسافة بين مصدر الضوء والمجسم.
Note
  • الـ Magnitude ممكن تتكتب بالشكل |v| أو ||v||. في المحاضرة هنستخدم |v|.

7) Magnitude Example 1

💡 المثال الأول: لو معاك المركبات جاهزة

  • لو عندك متجه جواه البيانات دي جاهزة: و .
  • عشان تجيب طوله، هتربعهم وتجمعهم تحت الجذر:
  • ده معناه إن طول السهم ده في الفراغ بيساوي 5 وحدات.

💡 المثال الثاني: لو معاك نقطتين وعايز الطول (المسافة) بينهم

  • لو عندك نقطة البداية A(1,2) ونقطة النهاية B(4,6) وعايز تحسب طول المتجه AB الواصل بينهم:
  • الخطوة 1 (هات المركبات): اطرح إحداثيات النهاية ناقص البداية عشان تعرف السهم مشي قد إيه في الـ X والـ Y:
  • فكده المتجه بتاعنا بقى عبارة عن (3, 4).
  • الخطوة 2 (احسب الطول): طبق القانون العادي على المركبات الجديدة:

  • ده معناه: ان المسافة الحقيقية بين النقطةA والنقطة B هي 5 وحدات.

8) Calculation of Vector Components

حساب مركبات المتجه (Vector Components) في الـ 3D

  • في الـ 2D كنا بنحتاج زاوية واحدة عشان نفك المتجه لـ و عن طريق الـ والـ .

  • أما في الـ 3D، الموضوع بيكبر معانا ومبقاش ينفع زاوية واحدة لأن السهم بيبقى طاير في الفراغ! فبنقيس الزاوية اللي بيعملها المتجه مع كل محور من المحاور التلاتة (). بنسمي الزوايا دي () (الفا , بيتا , جاما ) وبنستخدم حاجة اسمها Directional Cosines (جيوب تمام الاتجاه):

    • مركبة محور العرض ():
    • مركبة محور الارتفاع ():
    • مركبة محور العمق ():

قاعدة مهمه في الـ 3D:

  • مجموع مربعات جيب تمام الزوايا دي لازم يساوي 1 بالظبط:
  • العلاقة دي بتأكد إن اتجاه الـ vector متعرف صح في 3D space.
  • لو عايز تفهم ليه فهيا ليها اثبات رياضي ممكن تبحث عنه.

9) Unit Vectors and Normalization

Unit Vector

definition

Unit Vector is a vector with magnitude equal to 1, and it represents direction only.

  • الـ Unit Vector (متجه الوحدة): ده سهم طوله بيساوي 1 بالظبط، ووظيفته الوحيدة إنه يشاور على الاتجاه ومبيعبرش عن مسافة أو مقدار. بنرمز له بـ (v-hat).

Normalization

definition

Normalization is the process of converting a vector into a unit vector.

  • الـ Normalization (التوحيد): دي العملية اللي بنحول بيها أي متجه عادي لمتجه وحدة (Unit Vector) ,بنعملها إزاي؟ بنقسم المتجه على طوله الحقيقي:
  • بنحتاج الحركة دي في إيه في الجرافيكس؟
    • الإضاءة (Directional Lighting): لما نحسب اتجاه شعاع النور، إحنا مش محتاجين نعرف طول شعاع النور قد إيه، إحنا محتاجين اتجاهه بس عشان نحسب الظل.
    • اتجاه الكاميرا (Camera Orientation): عشان نحدد الكاميرا بتبص في أنهي اتجاه بالظبط في اللعبة.
    • الـ (Scaling): لما تحب تحرك أو تكبر مجسم في اتجاه معين من غير ما تبوظ أبعاده.

10) Angle Between Two Vectors

  • الـ Dot Product بنستخدمه علشان نعرف الزاوية بين متجهين.
  • الكمبيوتر في الأصل أعمى، مبيشوفش الأسهم مايلة إزاي، لكن بيحسب الزاوية (عن طريق الـ Cosine بتاعها).
  • لو بتعمل لعبه وعندك مشكله، عندنا الحارس واللاعب, وعايزين نعرف هل اللاعب ده في نطاق رؤية الحارس ولا الحارس مش شايفه, هنعرف منين الزاوية الي الحارس بيبص ليها ؟

  • عشان نحل المشكله دي هنستخدم الـ dot product.

Formula

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

  • هنا إنت أخدت الناتج بتاع الخطوة الأولى عشان نجيب الزاوية نفسها ().

Where

  • ا |v|: ده الـ magnitude بتاع vector v.
  • ا |w|: ده الـmagnitude بتاع vector w.
  • ا θ: الزاوية بين v و w.
  • الزاوية بتتقاس غالبا بين و 180°.
الدكتور مشرحش امثله علي النقطه دي فهكتفي بالي في الكتاب

امثله علي استخدامات الـ dot product

  • نماذج التظليل (Shading Models): بنستخدم الـ Dot Product علشان نعرف الضوء واقع على السطح بزاوية ايه، وبالتالي نحدد السطح منور ولا غامق.
  • اختبارات الرؤية (Visibility tests): كارت الشاشة بيعرف هل الـ object ده في مجال للكاميرا ولا لا؟ لو لا الكارت مبيرسموش أصلا عشان يوفر في الرامات ويزود الـ FPS
  • الـSurface Orientation and Normal Evaluation: بنحدد اتجاه السطح والـ Normal Vector بتاعه، وده مهم في الإضاءة والانعكاسات والظلال.

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

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

اتكلمنا في المحاضره دي عن الأساس الرياضي للـ Computer Graphics وعرفنا الفرق بين Scalar (رقم بس من غير اتجاه)، Point (مكان ثابت في الفراغ)، و Vector (ليه Magnitude و Direction).

وعرفنا إزاي نحسب Vector Components في 2D و 3D باستخدام الـ directional cosines، وإن الـ Magnitude بنحسبها بالقانون |v| = sqrt(x² + y² + z²).

واتكلمنا عن Unit Vectors - اللي طولها 1 وبتستخدم عشان تعبر عن الاتجاه بس، وإن الـ Normalization هي عملية تحويل أي Vector لـ Unit Vector عن طريق قسمته على Magnitude بتاعه.

وفي الآخر عرفنا الـ Dot Product وازاي بنستخدمه عشان نحسب الزاوية بين Vectors، وده بيستخدم في مجالات زي الإضاءة Shading Models واختبارات الرؤية Visibility Tests.