أتمنى قراءة الدرس السابق "الدرس الأول"
الدرس الثاني Scan Conversion Of A Line
و كما رأينا كيف نستخدم الأكواد الموجودة في OpenGL و لكن ألم يسأل أحدكم كيف تعمل
تلك الخطوط التي نقوم برسمها كيف ترسم و هل هي سريعة كفاية و كيف تعمل
سنرى كيفية رسم الخطوط و ما أفضل طريقة بينها و أسرعها و سأتحدث عن ثلاث طرق
الطريقة االعادية التي تستخدم معادلة الخطوط العادية Line Equation
و طريقة Digital Differential Analyzer (DDA) Algorithm
و أروع طريقة و أسرعها و أفضلها و هي Bresenham's Line Algorithm
و هذه ثلاث طرق لرسم خط بين نقطتين و سنبدأ:
Line Equation:
و في هذه الطريقة نقوم بأخذ النقطتين اللتان أريد رسم خط بينهما بإستخدام هذه:
Y = mX + b
و كما نعلم بأن a هي Slope و b هي y intercept of the line أي حدة إعتراض الخط
و قاعدة كل واحدة هي:
m = (Y2-Y1) / (X2-X1) , SLOPE
b = Y1 - mX1
و هنا بداية نقوم بإستخراج كل واحدة ثم نرى إن كان slope أصغر أو يساوي واحد m=<1 فإننا نقوم
بتحديد X=X1 و الزيادة عليها و نستخرج من Equation الرقم الآخر و هو Y و نقف عند الوصول إلى X2
أما في حالة m > 1 فإننا نعكس العملية فنقوم بتحديد Y=Y1 و الزيادة عليها و من ثم نستخرج من Equation
الرقم الآخر و هو X و نقف عند الوصول إلى Y2
و كما نرى بأن هذه العملية تستخدم أرقام float بشكل كبير فلدي ضرب و جمع float أترون كم هذه العملية
مكلفة ل CPU و لذى علينا إيجاد طريقة اسرع و أقل تكلفة من هذه الطريقة و سنجدها في DDA و Bresenham's