开发者

wu's antialiasing algorithm

开发者 https://www.devze.com 2023-01-17 09:35 出处:网络
function plot(x, y, c) is plot the pixel at (x, y) with brightness c (where 0 ≤ c ≤ 1) function ipart(x) is
function plot(x, y, c) is
    plot the pixel at (x, y) with brightness c (where 0 ≤ c ≤ 1)

function ipart(x) is
    return integer part of x

function round(x) is
    return ipart(x + 0.5)

function fpart(x) is
    return fractional part of x

function rfp开发者_高级运维art(x) is
    return 1 - fpart(x)

function drawLine(x1,y1,x2,y2) is
    dx = x2 - x1
    dy = y2 - y1
    if abs(dx) < abs(dy) then   
      swap x1, y1
      swap x2, y2
      swap dx, dy
    end if
    if x2 < x1
      swap x1, x2
      swap y1, y2
    end if
    gradient = dy / dx

// handle first endpoint
xend = round(x1)
yend = y1 + gradient * (xend - x1)
xgap = rfpart(x1 + 0.5)
xpxl1 = xend  // this will be used in the main loop
ypxl1 = ipart(yend)
plot(xpxl1, ypxl1, rfpart(yend) * xgap)
plot(xpxl1, ypxl1 + 1, fpart(yend) * xgap)
intery = yend + gradient // first y-intersection for the main loop

// handle second endpoint
xend = round (x2)
yend = y2 + gradient * (xend - x2)
xgap = fpart(x2 + 0.5)
xpxl2 = xend  // this will be used in the main loop
ypxl2 = ipart (yend)
plot (xpxl2, ypxl2, rfpart (yend) * xgap)
plot (xpxl2, ypxl2 + 1, fpart (yend) * xgap)

// main loop
for x from xpxl1 + 1 to xpxl2 - 1 do
    plot (x, ipart (intery), rfpart (intery))
    plot (x, ipart (intery) + 1, fpart (intery))
    intery = intery + gradient
end function

What does this mean?

function fpart(x) is
  return fractional part of x

How do I get the fractional part of x?


Fractional part is the part after the decimal point, for eg. the fractional part of 10.5 is 0.5. Assuming x is a floating-point number, x - floor(x) will get you the fractional part.


You should return the fractional part, which is what comes after the decimal.

4.34 = 0.33 ect...

0

精彩评论

暂无评论...
验证码 换一张
取 消