On Wed, 2005-01-19 at 21:07 -0500, Timothy Miller wrote:
> 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.

You are right of course. I shouldn't have posted at 02:00 after having
consumed a considerable amount of alcohol.. :)

> 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.

Not exactly right, but it doesn't look bad.

> And what do you mean that smooth polygons is what is implemented?  I
> didn't implement smooth polygons.

What I meant was that smooth wide lines can be implemented using
smooth polygons---if these are implemented that is.


--ms


_______________________________________________
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