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?
Vector is a quantity that has both magnitude and direction.
- الـ
Vectorليه حاجتين:Magnitude: الطول أو المقدار.Direction: الاتجاه.
- بعكس الـ
Scalarاللي ليه magnitude بس من غير direction. - هندسيا، الـ vector بيتعرض كـ سهم
directed line segment:- طول السهم بيمثل الـ magnitude (المقدار).
- اتجاه السهم بيمثل الـ direction (الاتجاه).
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
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 |
Examples
| Vector | Example |
|---|---|
| Velocity | 60 km north |
| Force | 10 N at 45° |
| Acceleration | 9.8 m/s² downward |
| Displacement | 5 m east |
Point
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) بنسميه
.
- ظله على الأرض (المحور الأفقي x) بنسميه
3. إزاي بقي نحسب الـ والـ بالرياضة؟
- لو إنت معاك طول المتجه نفسه (اللي هو
) والزاوية بتاعته ( )، تقدر تجيب مركباته بقوانين حساب المثلثات (الجا والجتا):- عشان تجيب الـ
: بتضرب الطول في جتا الزاوية.
- عشان تجيب الـ
- عشان تجيب الـ
: بتضرب الطول في جا الزاوية.
6) Vector Magnitude
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
- عشان دقة النور بتعتمد على المسافة بين مصدر الضوء والمجسم.
- الـ 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
Unit Vector is a vector with magnitude equal to 1, and it represents direction only.
- الـ Unit Vector (متجه الوحدة): ده سهم طوله بيساوي 1 بالظبط، ووظيفته الوحيدة إنه يشاور على الاتجاه ومبيعبرش عن مسافة أو مقدار. بنرمز له بـ
(v-hat).
Normalization
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 بتاع vectorv. - ا
|w|: ده الـmagnitude بتاع vectorw. - ا
θ: الزاوية بينvوw. - الزاوية بتتقاس غالبا بين
0°و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.