On Thu, 20 Jan 2005 02:03:09 +0100, Martijn Sipkema <[EMAIL PROTECTED]> wrote:
> > What we want to do is compute coverate and turn it into alpha.  Well,
> > let's think about this for a moment.  Any pixel that aligns exactly with
> > the center of the line should have alpha of 1.0.  Any pixel completely
> > off the line should have alpha of 0, and any pixel which lies on the
> > edge of the line should have alpha of 0.5.  Why not draw a polygon which
> > varies alpha from 1.0 at the center to 0.0 at the line width away from
> > the center?
> 
> That clearly won't give anything resembling the coverage. If you want to
> use a polygon for (wide) lines, then you should just use a smooth polygon,
> given that that is implemented. This won't even work correctly for width
> 1.0 lines as a horizontal/vertical line at integer coordinate won't show.
> You should be able to find an algorithm for smooth width 1.0 lines in
> books/articles; the Gupta-Sproull algorithm seems to be suitable.

Well, I've actually done a bit of work in the past on antialiased
lines.  I've implemented a number of different algorithms, etc. 
Having looked at a lot of them under zoom magnification, I think I
have a pretty good idea of what to expect.

That being said, I looked at the results from a few test cases, and
they all looked like how I expected them to look.

And I'm afraid you're incorrect about the horizontal/vertical lines. 
Try it.  They show up just fine.  With a vertical line at integer
coordinates, you get a two-pixel-wide line, and each column is 50%
gray.  This is exactly right.  (Well, actually if you take gamma into
account, it should be 75%, but that's a whole other issue.)

I think you need to look closer at the algorithm.  A 1-pixel-wide line
is rendered as a polygon which is TWO pixels wide, but since the alpha
interpolates toward zero, out from the center, it's zero at the far
edge, making it APPEAR 1 pixel wide, which is exactly what you want. 
And any pixel which lands in between shows up as some gray which
matches the coverage value.  As far as I can judge, diagrammatically
and visually, it produces correct results.

I diagrammed it out, and as far as I can judge, you should get exactly
the right results for all pixels if the width is 1.0.  But it ONLY
works for width 1.0.  Wider lines are a bit more complex, because this
gradient alpha occurs only at the far edges, while there's a solid
rectangle in the center.

And what do you mean that smooth polygons is what is implemented?  I
didn't implement smooth polygons.
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to