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

استخدام الدوال الدائرية عن طريق الجداول

مغلق
بدأه Abdullah.Alshammeri في 29 يونيو 2005 · 4 رد · 4,145 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم .

اليوم حطمت اللرقم القياسي ... ثلاث اسئلة في ثلاث مواضيع في ثلاث دقايق :unsure:

ولكن والله محتاج اسأل قبل ما يصير للمنتدى شي ... :unsure:

بينما كنت منهمك :rolleyes: في دراسة احد المحركات TV3D .. اطلعت على دوال رياضية (math library)

منها هذه الدالة

اقتباس
CosT( DegreesAngle As Single)
وقرأت شرحها .. ووجدت شيئا غريبا ... اقرأ
اقتباس
Looks up cosinus value in a cosinus table
يعني البحث عن قيمة جيب التمام لاحد المتغيرات من خلال جدول جيب التمام !!!!!

وعلى طول تذكرت انه احد الاعضاء ( اعتقد احمد صالح ) قال((لكن ما ادري باي موضوع... )) انه البعض

يستخدم الجدول لمعرفة جيب التمام لعدد ما .

فلماذا نتعب انفسنا بمثل هذه الدوال .. هل للتاكد ان القيمة ليست تقريبية مثلا ؟

وهل من السهل عمل مثل تلك الدوال المتقدمة والغريبة .. اتمنى اني اسمع جواب علمي ؟

تم تعديل هذه المشاركة بواسطة الشـمري في 29 يونيو 2005 في 03:22

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#2

جدول البحث Lookup Table

هو عملية لتحسين Optimize اكوادك ..

كمثال :

الدوال المثلثية Sin,Cos

الدالة Sin, Cos عند تنفيذها تحتاج العديد من الدورات للمعالج حوالي 6 دورات علي ما اعتقد 6 Cycles لتنفيذ هذه العملية .

تخيل استخدام هذه الدالة لحساب جيب زاوية دوران الكاميرا تحمل في دورة غير منتهيه طالما انت في اللعبة " استهلاك للمعالج " ( تري المبرمجون في قمة البخل :D ) .

;لذا يقوموا بعمل جدول يحتوي علي قيم جيم الSin و الCos .

بحيسبوها في بداية اللعبة و بالتالي لحساب مثلاً sin(90) سيجدها المترجم محسوبة اصلاً في بداية اللعبة و ياتي يالقيمة فوراً .

float sin_table[360]; تعريف مصفوفة جدول الجا

float cos_table[360]; تعرف مصفوفة جدول الجتا

// create look-up table

حلقة دوارة لجميع القيم الجا ، الجتا علي دائرة كاملة من القيم

360 درجة

for (int angle=0; angle < 360; angle++)

{

// convert angle to radians حول من تقدير زاوي إلي دائري

float rad_angle = angle * (3.14159/180);

// fill in next entries in look-up tables قم بتعبئة الجدول بالقيم

sin_table[angle] = sin(rad_angle);

cos_table[angle] = cos(rad_angle);

} // end for angle

ُExample

int y=Cos_table[90];

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

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

#3

يدو ان هنالك خطاء في مكان مشاركتي ،،، ولا يمكنني حذها :D

المفروض ان تكون "في رسم منحنى باستخدام "sin & cos

تم تعديل هذه المشاركة بواسطة da-crystal في 30 يونيو 2005 في 13:55

لا مستحيل غير الوقت

#4

الظاهر الامر مو بالسهولة .. اللي كنت متخيلها .. لكن الوقت هذا ما رح اسوي شي ..

لكن اذا كانت المسألة كلها عشان راحت المعالج .. الامر هين

وبالنسبة لدورات المعالج .. مو مهم .. خله يتعب .. بكيفه ... اهم شي انا ما اتعب :)

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

مو بس راح يتعب, اللعبة بعدين تصير بطيئة, و الناس راح تتصور ان الفيديو كارد مالتهم عطلان, و هو العطل الحقيقي من الكود :P مو من البطاقة.

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…