الدرس الثاني Line Scan Conversion

الناقل : elmasry | الكاتب الأصلى : Final Heaven | المصدر : www.arabteam2000-forum.com

أتمنى قراءة الدرس السابق "الدرس الأول"

الدرس الثاني Scan Conversion Of A Line

و كما رأينا كيف نستخدم الأكواد الموجودة في OpenGL و لكن ألم يسأل أحدكم كيف تعمل

تلك الخطوط التي نقوم برسمها كيف ترسم و هل هي سريعة كفاية و كيف تعمل

سنرى كيفية رسم الخطوط و ما أفضل طريقة بينها و أسرعها و سأتحدث عن ثلاث طرق

الطريقة االعادية التي تستخدم معادلة الخطوط العادية Line Equation

و طريقة Digital Differential Analyzer (DDA) Algorithm

و أروع طريقة و أسرعها و أفضلها و هي Bresenham's Line Algorithm

و هذه ثلاث طرق لرسم خط بين نقطتين و سنبدأ:

Line Equation:
ارفق صورة : post-84360-1173381010.jpg

و في هذه الطريقة نقوم بأخذ النقطتين اللتان أريد رسم خط بينهما بإستخدام هذه:


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