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

ماهو الفيكتور Vector

مغلق
بدأه Amir Imam في 20 نوفمبر 2007 · 7 رد · 2,766 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله

الاخوة الاعزاء اعضاء المنتدى الطيب

واجهني هذا المصطلح كثيرا في برمجة الالعاب Vector واشعر انه مهم :D .. واريد ان اعرف ما هو

سالت هذا السؤال ولكن جائني الجواب ان افيكتور يحجز مكان في الذاكرة علشان مش عارف ايه

لالالا انا عايز جواب عامي مبسط .. بالبلدي كده يعني

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

#2

المقصود بـ Vector هو "شعاع".

إذا كنت تذكر في الرياضيات، أنه هناك الكائن المسمى بـ شعاع أو متجه، هذا هو ال Vector

مثال: (إذا لم تكن لديك فكرة بتاتا)

لنفترض أن لدينا شعاع ش(س،ع) من صفات هذا الشعاع:

له مركبتين هما س، ع

وبالتالي يمكن أن نستخدم هذا الشعاع لوصف نقطة في فراغ ثنائي الأبعاد.

مثلا النقطة ن(5،6)

ولكن كيف لشعاع أن يصف نقطة؟ فالنقطة هي نقطة، والشعاع هو شعاع؟؟

في الحقيقة عندما نستخدم هذا التعبير لوصف نقطة، فإننا تجاوزا نتكلم عن رأس الشعاع المتموضع في النقطة (5،6) ولكن من أين يبدأ؟ من الواضح أن مبدؤه هو "أصل" الإحداثيات، أي النقطة (0،0) وبالتالي لمعرفة شكل هذا الشعاع قم برسم خط من النقطة (0،0) إلى النقطة (6،5) ورأس الشعاع (يرمز له بسهم) عند النقطة الأخيرة.

يمكن للشعاع أن يأخذ أي عدد من المركبات، وفي الرسوم ثلاثية الأبعاد نستخدم عادة أشعة ذات ثلاثة (أو أربعة، ولكن لا تلقي بالاً للأربعة) مركبات وذلك من أجل توصيف وتحديد النقاط في الفراغ ثلاثي الأبعاد.

أحد خواص الشعاع هي طويلة الشعاع، أي طوله، وعندما يكون طول الشعاع مساو للواحد، يسمى الشعاع بشعاع الواحدة.

إذا كنت تذكر نظرية فيثاغورث في المثلث القائم، فهي أساسا تقوم بحساب طول شعاع (وتر المثلث) بالاعتماد على الضلعين القائتمين (هما في الحقيقة مركبات الشعاع الوتر)، للتذكير:

طول الوتر = الجذر التربيعي (مربع الضلع الأول + مربع الضلع الثني)

وطول شعاع ثلاثي الأبعاد يحسب بالطريقة ذاتها:

نفرض أن لدينا الشعاع ش(س، ع، ص)

طول الشعاع ش= الجذر التربيعي(مربع س + مربع ع + مربع ص)

وهكذا مهما كان بعد الشعاع (أي عدد مركباته)

رياضيات الأشعة:

يمكن جمع، طرح وضرب الأشعة، والناتج يكون دوماً شعاع يسمى بشعاع المحصلة.

هناك العديد من العمليات الرياضية التي يمكن إجراؤها على الأشعة، للاطلاع عليها استخدم الكلمات التالية في البحث:

Vector Math

Vector Dot Product

Vector Cross Product

Vector Normalizing

لاشك أنك ستقع على موقع رياضيات يشرح لك هذه الأمور وغيرها.

الشعاع البرمجي(لا علاقة له بالرياضيات):

في بعض لغات البرمجة، هناك بنية data structure تسمى Vector، وحقيقة لا علاقة لها بالشعاع الرياضي إلا من ناحية أنها بنية مؤلفة من عدد حر من المركبات، يستخدم هذا الشعاع من أجل تخزين عناصر فيه، أي أنه تماما مثل ال Array ولكن يمكن لحجمه أن يتغير.

مثلا: الشعاع حيوانات أليفة(قطة، كلب، دجاجة)

طبعا لا يمكن لنا إجراء عمليات رياضية عليه كما في الأشعة الرياضية.

#3

بسم الله

جزاك الله خيرا يا عزيزي .. شرحك فعلا جميل وافضل مما سمعت من قبل واوضح لي امور كثيرة

ولكن ماذا يفيد هذا الفيكتور في برمجة الالعاب .. لو امكن ان تشرح لي بمثال

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

#4

في الحقيقة لا يمكن أن نوضح استخدامات الفيكتور بشكل كامل من خلال مثال صغير، ولكن لكي تكون على بينة من الأمور، تستخدم الأشعة أو الفيكتور في المجالات التالية في الألعاب (على سبيل المثال وليس الحصر):

- في الألعاب ثلاثية الأبعاد يتم تحديد موقع أي جسم من خلال شعاع.

- يتم تحريك وتدوير وتغيير حجم أي جسم من خلال مجموعة أشعة

- يتم حساب الإضاءة المسلطة على أي جسم من خلال شعاع، وفي هذه الحالة الشعاع يمثل شعاع الضوء الساقط على الجسم

- يتم حساب نواتج القوى الفيزيائية المؤثرة على الجسم من خلال شعاع، لأن القوى الفيزيائية يمكن تمثيلها وتعيينها بواسطة الأشعة بطريقة منظمة وسهلة جدا

- يتم حساب علاقات الرؤية بين مجسمات اللعبة وعين اللاعب (الكاميرا الافتراضية التي ستقوم بإظهار المجسمات على الشاشة) من خلال حساب تقاطعات الأشعة بين كافة نقاط المجسمات وبين نقطة الرؤية.

من هنا نرى أن الأشعة تدخل بشكل خطير في مجمل العمليات الحسابية في أي لعبة، وبالتالي عليك أن تدرسها بشكل جيد.

في الألعاب ثنائية الأبعاد يفضل إجراء كافة العمليات من خلال الأشعة، لأن هذا هو الوضع النموذجي والذي يحقق بينة برمجية مريحة أثناء التطوير، ولكن عندما يتم الاستغناء عن الأشعة في مثل هذه الألعاب فالسبب يكون تقني، على سبيل المثال، تكون اللعبة مخصصة لهاتف جوال لا يمكن للمبرمج في هذه الحالة أن يوسع البنى البرمجية ويعقدها كي لا يتم استنزاف موارد النظام الذي ستعمل عليه اللعبة، إذاً فالابتعاد عن الأشعة كان لسبب تقني وليس لأن الخيارات الأخرى أفضل.

سأحاول أن أضع موضوعا يشرح مبادئ الأشعة ولكن حاليا أنا مشغول جدا.

أرجو أن أكون قد أفدتك.

#5

اخي يمكنك قراءة الفصل الهندسة التحليلية في المستوي و الفراغ في المواضيع المثبتة .و إن شاء الله تستفاد اكثر

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#6

بسم الله

جزاكم الله خيرا يا اخواني .. كنت اظن ان الفيكتور شيء ثانوي في برمجة الالعاب لكن على ما يبدو انه شيء اساسي ويحتاج الى دراسة

الله المستعان :)

#7

قمت العام الماضي بكتابة موضوع عن الـ vectors و لكن لا ادري مدى فائدته .. ربما فيه فلسفة زايدة شوية

/index.php?showtopic=102491

#8
hasan_aljudy كتب:
قمت العام الماضي بكتابة موضوع عن الـ vectors و لكن لا ادري مدى فائدته .. ربما فيه فلسفة زايدة شوية

/index.php?showtopic=102491

يا مرحـــــــــــــــــبــــــا

هذا الموضوع مغلق.

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