خوارزمية خط بريسنهام

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

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

يُستخدم مصطلح "Bresenham" اليوم للإشارة إلى مجموعة من الخوارزميات التي توسع أو تعدل خوارزمية Bresenham الأصلية.

تاريخ

سُميت خوارزمية بريسنهام للخطوط نسبةً إلى جاك إلتون بريسنهام الذي طورها عام 1962 في شركة آي بي إم . وفي عام 2001 كتب بريسنهام: [ 1 ]

كنت أعمل في مختبر الحوسبة بمختبر تطوير IBM في سان خوسيه. كان جهاز رسم Calcomp موصولًا بجهاز IBM 1401 عبر وحدة تحكم الآلة الكاتبة 1407. كانت الخوارزمية قيد الاستخدام الفعلي بحلول صيف عام 1962، وربما قبل ذلك بشهر تقريبًا. في ذلك الوقت، كانت البرامج تُتبادل بحرية بين الشركات، لذا كان لدى Calcomp (جيم نيولاند وكالفن هيفت) نسخ منها. عندما عدت إلى جامعة ستانفورد في خريف عام 1962، وضعت نسخة في مكتبة مركز الحوسبة بالجامعة. قُبل وصف روتين رسم الخطوط للعرض في المؤتمر الوطني لجمعية ACM لعام 1963 في دنفر، كولورادو. كان ذلك عامًا لم تُنشر فيه أي وقائع، بل نُشر فقط جدول أعمال المتحدثين والمواضيع في عدد من مجلة Communications of the ACM. بعد عرضي، سألني أحد العاملين في مجلة IBM Systems Journal عما إذا كان بإمكانهم نشر الورقة. وافقتُ بكل سرور، وقاموا بنشرها عام 1965.

طريقة

توضيح لنتيجة خوارزمية بريسنهام للخط. تقع النقطة (0,0) في الزاوية العلوية اليسرى من الشبكة، وتقع النقطة (1,1) في الطرف العلوي الأيسر من الخط، وتقع النقطة (11,5) في الطرف السفلي الأيمن من الخط.

سيتم تطبيق الاتفاقيات التالية:

  • النقطة العلوية اليسرى هي (0,0) بحيث تزداد إحداثيات البكسل في الاتجاهين الأيمن والسفلي (على سبيل المثال، البكسل عند (7,4) يقع مباشرة فوق البكسل عند (7,5))، و
  • مراكز البكسل لها إحداثيات عددية صحيحة.

تمثل البكسلات الموجودة عند نقطتي نهاية الخط(x0،y0){\displaystyle (x_{0},y_{0})}و(x1،y1){\displaystyle (x_{1},y_{1})}، حيث يمثل الإحداثي الأول في الزوج العمود، ويمثل الإحداثي الثاني الصف.

سيتم عرض الخوارزمية مبدئيًا فقط للجزء الثُمن الذي يتجه فيه الجزء لأسفل ولليمين (x0x1{\displaystyle x_{0}\leq x_{1}}وy0y1{\displaystyle y_{0}\leq y_{1}})، وإسقاطها الأفقيx1-x0{\displaystyle x_{1}-x_{0}}أطول من الإسقاط الرأسيy1-y0{\displaystyle y_{1}-y_{0}}(الخط له ميل موجب أقل من 1). في هذا الثمن، لكل عمود x بينx0{\displaystyle x_{0}}وx1{\displaystyle x_{1}}يوجد صف واحد فقط y (محسوب بواسطة الخوارزمية) يحتوي على بكسل من الخط، بينما كل صف بينy0{\displaystyle y_{0}}وy1{\displaystyle y_{1}}قد تحتوي على عدة وحدات بكسل مُرَسَّمة.

تختار خوارزمية بريسنهام العدد الصحيح y المقابل لمركز البكسل الأقرب إلى قيمة y المثالية (الكسرية) لنفس قيمة x ؛ في الأعمدة المتتالية، يمكن أن تظل قيمة y كما هي أو تزيد بمقدار 1. المعادلة العامة للخط المستقيم المار بنقطتي النهاية هي:

y-y0y1-y0=x-x0x1-x0{\displaystyle {\frac {y-y_{0}}{y_{1}-y_{0}}}={\frac {x-x_{0}}{x_{1}-x_{0}}}}.

بما أننا نعرف العمود، x ، فإن صف البكسل، y ، يُعطى بتقريب هذه الكمية إلى أقرب عدد صحيح:

y=y1-y0x1-x0(x-x0)+y0{\displaystyle y={\frac {y_{1}-y_{0}}{x_{1}-x_{0}}}(x-x_{0})+y_{0}}.

المنحدر(y1-y0)/(x1-x0){\displaystyle (y_{1}-y_{0})/(x_{1}-x_{0})}يعتمد على إحداثيات نقطة النهاية فقط ويمكن حسابه مسبقًا، ويمكن حساب قيمة y المثالية لقيم x الصحيحة المتتالية بدءًا منy0{\displaystyle y_{0}}وإضافة الميل بشكل متكرر.

عمليًا، لا تتتبع الخوارزمية إحداثي y، الذي يزداد بمقدار m = ∆y/∆x في كل مرة تزداد فيها قيمة x بمقدار واحد؛ بل تحتفظ بحد خطأ في كل مرحلة، يمثل معكوس المسافة من (أ) النقطة التي يخرج عندها الخط من البكسل إلى (ب) الحافة العلوية للبكسل. تُضبط هذه القيمة أولًا علىy0-0.5{\displaystyle y_{0}-0.5}(بسبب استخدام إحداثيات مركز البكسل)، ويتم زيادتها بمقدار m في كل مرة يتم فيها زيادة الإحداثي x بمقدار واحد. إذا أصبح الخطأ أكبر من 0.5 ، فإننا نعلم أن الخط قد تحرك لأعلى بمقدار بكسل واحد، وأنه يجب علينا زيادة الإحداثي y وإعادة ضبط الخطأ لتمثيل المسافة من أعلى البكسل الجديد - ويتم ذلك عن طريق طرح واحد من الخطأ. [ 2 ]

الاشتقاق

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

معادلة الخط

y = f(x) = 0.5x + 1 أو f(x,y) = x - 2y + 2 = 0
أنصاف المستويات الموجبة والسالبة

يُكتب معادلة الخط المستقيم بصيغة الميل والمقطع كما يلي:

y=و(x)=مx+ب{\displaystyle y=f(x)=mx+b}

أينم{\displaystyle m}هو الميل وب{\displaystyle b}هو نقطة تقاطع المحور الصادي . لأن هذه دالة لـx{\displaystyle x}لا يمكنها تمثيل خط عمودي. لذلك، سيكون من المفيد كتابة هذه المعادلة كدالة لكليهما.x{\displaystyle x}وy{\displaystyle y}القدرة على رسم خطوط بأي زاوية. يمكن التعبير عن زاوية (أو ميل) الخط بـ "الارتفاع على الامتداد الأفقي"، أوΔy/Δx{\displaystyle \Delta y/\Delta x}ثم، باستخدام التلاعب الجبري،

y=مx+بy=ΔyΔxx+ب(Δx)y=(Δy)x+(Δx)ب0=(Δy)x-(Δx)y+(Δx)ب{\displaystyle {\begin{aligned}y&=mx+b\\y&={\frac {\Delta y}{\Delta x}}x+b\\(\Delta x)y&=(\Delta y)x+(\Delta x)b\\0&=(\Delta y)x-(\Delta x)y+(\Delta x)b\end{محاذاة}}}

بجعل هذه المعادلة الأخيرة دالة لـx{\displaystyle x}وy{\displaystyle y}، ويمكن كتابتها على النحو التالي

و(x،y):=أx+بy+ج=0{\displaystyle f(x,y):=Ax+By+C=0}

حيث الثوابت هي

  • أ=Δy=y1-y0{\displaystyle A=\Delta y=y_{1}-y_{0}}
  • ب=-Δx=-(x1-x0){\displaystyle B=-\Delta x=-(x_{1}-x_{0})}
  • ج=(Δx)ب=(x1-x0)ب{\displaystyle C=(\Delta x)b=(x_{1}-x_{0})b}

ثم يتم تعريف الخط لبعض الثوابتأ{\displaystyle A}،ب{\displaystyle B}، وج{\displaystyle C}في أي مكانو(x،y)=0{\displaystyle f(x,y)=0}أي، بالنسبة لأي(x،y){\displaystyle (x,y)}ليس على الخط،و(x،y)0{\displaystyle f(x,y)\neq 0}لا يتضمن هذا الشكل إلا الأعداد الصحيحة إذاx{\displaystyle x}وy{\displaystyle y}هي أعداد صحيحة، لأن الثوابتأ{\displaystyle A}،ب{\displaystyle B}، وج{\displaystyle C}يتم تعريفها على أنها أعداد صحيحة.

على سبيل المثال، السطرy=12x+1{\textstyle y={\frac {1}{2}}x+1}ويمكن كتابة ذلك على النحو التاليو(x،y)=x-2y+2{\displaystyle f(x,y)=x-2y+2}النقطة (2،2) تقع على الخط

و(2،2)=x-2y+2=(2)-2(2)+2=2-4+2=0{\displaystyle f(2,2)=x-2y+2=(2)-2(2)+2=2-4+2=0}

والنقطة (2،3) ليست على الخط

و(2،3)=(2)-2(3)+2=2-6+2=-2{\displaystyle f(2,3)=(2)-2(3)+2=2-6+2=-2}

ولا النقطة (2,1)

و(2،1)=(2)-2(1)+2=2-2+2=2{\displaystyle f(2,1)=(2)-2(1)+2=2-2+2=2}

لاحظ أن النقطتين (2،1) و(2،3) تقعان على جانبين متقابلين من الخط وو(x،y){\displaystyle f(x,y)}تكون قيمتها موجبة أو سالبة. يقسم الخط المستوى إلى نصفين، ويكون النصف الذي يحمل قيمة سالبة هو النصف الذي يحمل قيمة سالبة.و(x،y){\displaystyle f(x,y)}يمكن تسمية النصف الأول بالنصف السالب من المستوى، والنصف الآخر بالنصف الموجب. هذه الملاحظة بالغة الأهمية في بقية الاشتقاق.

الخوارزمية

نقطة البداية على الخط

و(x0،y0)=0{\displaystyle f(x_{0},y_{0})=0}

فقط لأن الخط محدد ليبدأ وينتهي عند إحداثيات عددية صحيحة (على الرغم من أنه من المعقول تمامًا الرغبة في رسم خط بنقاط نهاية غير عددية صحيحة).

النقطة المرشحة (2,2) باللون الأزرق ونقطتان مرشحتان باللون الأخضر (3,2) و (3,3).

مع الأخذ في الاعتبار أن الميل هو على الأكثر1{\displaystyle 1}، والمشكلة الآن تكمن في ما إذا كان ينبغي أن تكون النقطة التالية عند(x0+1،y0){\displaystyle (x_{0}+1,y_{0})}أو(x0+1،y0+1){\displaystyle (x_{0}+1,y_{0}+1)}ربما يكون من البديهي اختيار النقطة بناءً على النقطة الأقرب إلى الخط عندx0+1{\displaystyle x_{0}+1}إذا كانت النقطة أقرب إلى الأولى، فأدرج الأولى على الخط، وإذا كانت الثانية، فأدرج الثانية. وللإجابة على هذا السؤال، احسب دالة الخط عند نقطة المنتصف بين هاتين النقطتين:

و(x0+1،y0+12){\displaystyle f(x_{0}+1,y_{0}+{\tfrac {1}{2}})}

إذا كانت قيمة هذا موجبة، فإن الخط المثالي يقع أسفل نقطة المنتصف وأقرب إلى النقطة المرشحة.(x0+1،y0+1){\displaystyle (x_{0}+1,y_{0}+1)}أي أن الإحداثي y يجب أن يزداد. وإلا، فإن الخط المثالي يمر عبر نقطة المنتصف أو فوقها، ويجب أن يبقى الإحداثي y كما هو؛ وفي هذه الحالة تكون النقطة(x0+1،y0){\displaystyle (x_{0}+1,y_{0})}يتم اختيارها. قيمة دالة الخط عند نقطة المنتصف هذه هي المحدد الوحيد للنقطة التي يجب اختيارها.

تُظهر الصورة المجاورة النقطة الزرقاء (2،2) التي تم اختيارها لتكون على الخط مع نقطتين مرشحتين باللون الأخضر (3،2) و(3،3). أما النقطة السوداء (3، 2.5) فهي نقطة المنتصف بين النقطتين المرشحتين.

خوارزمية لحساب الأعداد الصحيحة

بدلاً من ذلك، يمكن استخدام الفرق بين النقاط بدلاً من حساب قيمة f(x,y) عند منتصف المسافة. تتيح هذه الطريقة البديلة إجراء العمليات الحسابية على الأعداد الصحيحة فقط، وهي أسرع عمومًا من استخدام العمليات الحسابية على الأعداد العشرية . لاستنتاج الطريقة الأخرى، نُعرّف الفرق كما يلي:

دأنا=و(xأنا+1،yأنا+12)-و(x0،y0){\displaystyle D_{i}=f(x_{i}+1,y_{i}+{\tfrac {1}{2}})-f(x_{0},y_{0})}

بالنسبة للقرار الأول، فإن هذه الصيغة تعادل طريقة نقطة المنتصف لأنو(x0،y0)=0{\displaystyle f(x_{0},y_{0})=0}عند نقطة البداية. بتبسيط هذا التعبير نحصل على:

د0=[أ(x0+1)+ب(y0+12)+ج]-[أx0+بy0+ج]=[أx0+بy0+ج+أ+12ب]-[أx0+بy0+ج]=أ+12ب=Δy-12Δx{\displaystyle {\begin{array}{rclcl}D_{0}&=&\left[A(x_{0}+1)+B\left(y_{0}+{\frac {1}{2}}\right)+C\right]&-&\left[Ax_{0}+By_{0}+C\right]\\&=&\left[Ax_{0}+By_{0}+C+A+{\frac {1}{2}}B\right]&-&\left[Ax_{0}+By_{0}+C\right]\\&=&A+{\frac {1}{2}}B=\Delta y-{\frac {1}{2}}\Delta x\end{array}}}

كما هو الحال مع طريقة نقطة المنتصف، إذاد0{\displaystyle D_{0}}إذا كانت النتيجة موجبة، فاختر(x0+1،y0+1){\displaystyle (x_{0}+1,y_{0}+1)}وإلا فاختر(x0+1،y0){\displaystyle (x_{0}+1,y_{0})}.

لو(x0+1،y0){\displaystyle (x_{0}+1,y_{0})}يتم اختياره، والتغيير فيدأنا{\displaystyle D_{i}}سيكون:

Δد=و(x0+2،y0+12)-و(x0+1،y0+12)=أ=Δy{\displaystyle {\begin{array}{lclcl}\Delta D&=&f(x_{0}+2,y_{0}+{\tfrac {1}{2}})-f(x_{0}+1,y_{0}+{\tfrac {1}{2}})&=&A&=&\Delta y\\\end{array}}}

لو(x0+1،y0+1){\displaystyle (x_{0}+1,y_{0}+1)}يتم اختيار التغيير فيدأنا{\displaystyle D_{i}}سيكون:

Δد=و(x0+2،y0+32)-و(x0+1،y0+12)=أ+ب=Δy-Δx{\displaystyle {\begin{array}{lclcl}\Delta D&=&f(x_{0}+2,y_{0}+{\tfrac {3}{2}})-f(x_{0}+1,y_{0}+{\tfrac {1}{2}})&=&A+B&=&\Delta y-\Delta x\end{array}}}

إذا كانت قيمة D الجديدة موجبة،(x0+2،y0+1){\displaystyle (x_{0}+2,y_{0}+1)}يتم اختياره، وإلا(x0+2،y0){\displaystyle (x_{0}+2,y_{0})}يمكن تعميم هذا القرار من خلال تراكم الخطأ في كل نقطة لاحقة.

رسم الخط من (0,1) إلى (6,4) يوضح مخططًا لخطوط الشبكة والبكسلات

تم إنجاز جميع اشتقاقات الخوارزمية. إحدى مشكلات الأداء هي العامل 1/2 في القيمة الأولية لـ D. بما أن كل هذا يتعلق بإشارة الفرق المتراكم، فيمكن ضرب كل شيء في 2 دون أي تأثير.

ينتج عن ذلك خوارزمية تستخدم فقط العمليات الحسابية للأعداد الصحيحة.

plotLine(x0, y0, x1, y1) dx = x1 - x0 dy = y1 - y0 D = 2*dy - dx y = y0 لكل قيمة x من x0 إلى x1 plot(x, y) إذا كانت D > 0 ص = ص + 1 D = D + (2 * (dy - dx)) آخر D = D + 2*dy نهاية الشرط

تشغيل هذه الخوارزمية لـو(x،y)=x-2y+2{\displaystyle f(x,y)=x-2y+2}ينتج عن الانتقال من (0,1) إلى (6,4) الفروق التالية مع dx=6 و dy=3:

D=2*3-6=0 كرر من 0 إلى 6 * x=0: plot(0, 1) , D≤0: D=0+6=6 * x=1: plot(1, 1) , D>0: D=6-12=-6, y=1+1=2, D=-6+6=0 * x=2: plot(2, 2) , D≤0: D=0+6=6 * x=3: plot(3, 2) , D>0: D=6-12=-6, y=2+1=3, D=-6+6=0 * x=4: plot(4, 3) , D≤0: D=0+6=6 * x=5: plot(5, 3) , D>0: D=6-12=-6, y=3+1=4, D=-6+6=0 * x=6: plot(6, 4) , D≤0: D=0+6=6

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

جميع الحالات

ومع ذلك، كما ذكر أعلاه، فإن هذا يعمل فقط بالنسبة للثمانية الصفرية، أي الخطوط التي تبدأ من نقطة الأصل بميل بين 0 و 1 حيث تزداد قيمة x بمقدار 1 بالضبط لكل تكرار وتزداد قيمة y بمقدار 0 أو 1.

يمكن توسيع الخوارزمية لتغطية المنحدرات بين 0 و -1 عن طريق التحقق مما إذا كان y بحاجة إلى الزيادة أو النقصان (أي dy < 0).

plotLineLow(x0, y0, x1, y1) dx = x1 - x0 dy = y1 - y0 yi = 1 إذا كانت قيمة dy أقل من 0 yi = -1 dy = -dy نهاية الشرط D = (2 * dy) - dx y = y0 لكل قيمة x من x0 إلى x1 plot(x, y) إذا كانت D > 0 ص = ص + صي D = D + (2 * (dy - dx)) آخر D = D + 2*dy نهاية الشرط

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

plotLineHigh(x0, y0, x1, y1) dx = x1 - x0 dy = y1 - y0 xi = 1 إذا كانت dx < 0 xi = -1 dx = -dx نهاية الشرط D = (2 * dx) - dy x = x0 لكل قيمة y من y0 إلى y1 plot(x, y) إذا كانت D > 0 x = x + xi D = D + (2 * (dx - dy)) آخر D = D + 2*dx نهاية الشرط

يتطلب الحل الكامل تحديد ما إذا كانت x1 > x0 أو y1 > y0 وعكس إحداثيات الإدخال قبل الرسم، وبالتالي

ارسم الخط (x0، y0، x1، y1) إذا كانت القيمة المطلقة لـ (y1 - y0) أقل من القيمة المطلقة لـ (x1 - x0) إذا كانت x0 أكبر من x1 plotLineLow(x1, y1, x0, y0) آخر plotLineLow(x0, y0, x1, y1) نهاية الشرط، وإلا إذا كان y0 > y1 plotLineHigh(x1, y1, x0, y0) آخر plotLineHigh(x0, y0, x1, y1) نهاية الشرط نهاية الشرط

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

تستخدم بعض الإصدارات مبادئ بريسنهام للخطأ التزايدي الصحيح لإجراء جميع عمليات رسم الخطوط الثمانية، مع موازنة الخطأ الموجب والسالب بين إحداثيات x و y. [ 3 ]

plotLine(x0, y0, x1, y1) dx = abs(x1 - x0) sx = x0 < x1 ؟ 1 : -1 dy = -abs(y1 - y0) sy = y0 < y1 ? 1 : -1 الخطأ = dx + dy صحيح​ plot(x0, y0) e2 = 2 * الخطأ إذا كان e2 >= dy، وإذا كان x0 == x1، فتوقف. الخطأ = الخطأ + dy x0 = x0 + sx إذا كان e2 ≤ dx، وإذا كان y0 ≥ y1 ، فاخرج من الحلقة. الخطأ = الخطأ + dx y0 = y0 + sy نهاية الشرط نهاية الحلقة

خوارزميات مماثلة

يمكن تفسير خوارزمية بريسنهام على أنها محلل تفاضلي رقمي معدل قليلاً (باستخدام 0.5 كعتبة خطأ بدلاً من 0، وهو أمر مطلوب لرسم المضلعات غير المتداخلة).

يُستخدم مبدأ استخدام الخطأ التزايدي بدلاً من عمليات القسمة في تطبيقات أخرى في مجال الرسومات. فمن الممكن استخدام هذه التقنية لحساب إحداثيات U وV أثناء المسح النقطي للمضلعات ذات الخرائط النسيجية. [ 4 ] كما تستخدم محركات عرض خرائط الارتفاعات ثلاثية الأبعاد (فوكسل) المستخدمة في بعض ألعاب الحاسوب الشخصي هذا المبدأ.

نشر بريسنهام أيضًا خوارزمية حسابية تعتمد على تقنية Run-Slice: فبينما تُجري خوارزمية Run-Length المذكورة أعلاه حلقةً على المحور الرئيسي، تُجري خوارزمية Run-Slice حلقةً في الاتجاه المعاكس. [ 5 ] وقد تم توثيق هذه الطريقة في عدد من براءات الاختراع الأمريكية.

تم توسيع نطاق الخوارزمية لتشمل:

  • رسم خطوط بسمك عشوائي، وهي خوارزمية ابتكرها آلان مورفي في شركة IBM. [ 6 ]
  • ارسم أنواعًا متعددة من المنحنيات (الدوائر، والقطع الناقصة، والمنحنيات التكعيبية، والمنحنيات التربيعية، والمنحنيات النسبية بيزير ) والخطوط والمنحنيات المضادة للتشويش؛ مجموعة من الخوارزميات من تأليف ألويس زينجل. [ 3 ]

انظر أيضاً

ملحوظات

  1. بول إي. بلاك. قاموس الخوارزميات وهياكل البيانات، المعهد الوطني للمعايير والتكنولوجيا (NIST ). https://xlinux.nist.gov/dads/HTML/bresenham.html
  2. جوي، كينيث. "خوارزمية بريسنهام" (ملف PDF) . مجموعة أبحاث التصور والرسومات، قسم علوم الحاسوب، جامعة كاليفورنيا، ديفيس . تم الاطلاع عليه بتاريخ 20 ديسمبر 2016 .
  3. 1 2 زينجل، ألويس (2016) [نُشر سابقًا في عام 2012]. خوارزمية تحويل المنحنيات إلى صور نقطية (ملف PDF) (تقرير).ملخص وعرض توضيحي بصيغة HTML: زينجل، ألويس (2020) [نُشر سابقًا في 2012]. "جمال خوارزمية بريسنهام" . zingl.github.io .
  4. براءة الاختراع الأمريكية رقم 5739818 ، سباكمان، جون نيل، "جهاز وطريقة لإجراء استيفاء صحيح منظورياً في رسومات الحاسوب"، نُشرت في 14 أبريل 1998، مُسجلة باسم شركة كانون المحدودة. 
  5. "كتاب مايكل أبرش الأسود لبرمجة الرسومات - الطبعة الخاصة: الجيد والسيئ والمُجزأ" . www.phatcode.net . تاريخ الاطلاع: 13 فبراير 2024 .؛
  6. "خوارزمية خط بريسنهام المعدلة لمورفي" . homepages.enterprise.net . تم الاطلاع عليه بتاريخ 9 يونيو 2018 .('زيادة سمك الخط عن طريق تعديل خوارزمية بريسنهام' في نشرة الإفصاح الفني لشركة IBM المجلد 20 العدد 12 مايو 1978 الصفحات 5358-5366.)

مراجع

للمزيد من القراءة

  • أطروحة باتريك جيلسباندا ، التي تتضمن امتدادًا لخوارزمية بريسنهام لرسم الخطوط لإجراء إزالة الخطوط المخفية ثلاثية الأبعاد
    • نُشر أيضًا في وقائع مؤتمر MICAD '87 حول التصميم بمساعدة الحاسوب/التصنيع بمساعدة الحاسوب ورسومات الحاسوب، صفحة 591 - ISBN 2-86601-084-1.
  • زيادة سمك الخط عن طريق تعديل خوارزمية بريسنهام ، إيه إس مورفي، نشرة الإفصاح الفني لشركة آي بي إم، المجلد 20، العدد 12، مايو 1978.
  • بريسنهام، جاك (فبراير 1977). "خوارزمية خطية للعرض الرقمي التزايدي للأقواس الدائرية". اتصالات رابطة آلات الحوسبة . 20 (2): 100-106 . doi : 10.1145/359423.359432 . وأيضًا التقرير الفني 1964 يناير-27 -11- خوارزمية الدائرة TR-02-286 مختبر آي بي إم سان خوسيه