Bresenham演算法實現任意斜率直線繪製

2021-05-23 12:14:36 字數 457 閱讀 2639

參考《計算機圖形學》 donald.hearn

書中給出了斜率k在0-1之間的推導過程

在k>=1時以y方向為單位步長遞增,此時有x=(y-b)/b;

d(low)=x-x(k)=( y(k+1)-b )/m-x(k);

d(upper)=x(k+1)-x=x(k)+1-( y(k+1)-b )/m;

p(k)=dx*(d(low)-d(upper))=2*dx*(y(k)+1-b)-2*dy*x(k)-dx;

可以推出

p(k+1)=p(k)+2*dx-2*dy(x(k+1)-x(k));

其中x(k+1)-x(k)的值取決於p(k)的符號

將直線方程式和斜率m=dy/dx帶入p(k)的表示式可以得出

p(0)=dy,由此可以寫出斜率大於1時的實現,

同理可以按此方法得出斜率在(-1,0)和斜率小於-1時的情況,或者可以根據對稱性得出

Verilog實現Bresenham任意斜率直線

根據bresenham演算法原理 簡單修改後支援任意斜率直線 reg 15 0 dx reg 15 0 dy reg signed 15 0 ix reg signed 15 0 iy reg signed 15 0 iw always posedge clk begin if m req 1 b1...

SWFLoader實現任意縮放

有的時候我們想通過swfloader來載入乙個外部的swf檔案,但是頭疼的問題就是當我們把瀏覽器放大放小的時候載入的swf大小並不發生變化。現在說一下swfloader他預設 則會縮放內容以適應swfloader控制項並且保持載入內容的高寬比例。但是我們有時候需要通過swfloader縮放來適應載入...

實現任意進製轉化

問題描述 實現十進位制轉num換成r進製數,num和r從鍵盤讀入 假定num為int且 32767 num 32767,r為int且2 r 16 程式設計可用素材 printf input the num,r printf output n 程式的執行效果應類似地如圖1和圖2所示,圖1中的4095,...