[gameprogrammer] Re: Vector Graphics (seconded request)
- From: Bob Pendleton <bob@xxxxxxxxxxxxx>
- To: Gameprogrammer Mailing List <gameprogrammer@xxxxxxxxxxxxx>
- Date: Tue, 09 Nov 2004 16:03:55 -0600
On Tue, 2004-11-09 at 13:22, Scott Harper wrote:
> I'm reminded of another problem I encountered (I've been busy with
> school, thus unable to continue work on the project yet), and that was
> with parallel lines. If I draw one line at exactly one pixel's width
> from point A to point B, then another line (one pixel's width again)
> from/to points exactly on pixel below the previous ones, I SHOULD end up
> with what looks like one line two pixels wide. However, when I zoom in
> closer to the image, there occur several zoom levels where the alignment
> or precision is insufficient to draw them correctly, and I sometimes see
> a gap of a pixel or more in between the two lines.
>
> My question is how should I be handling this differently in order to
> avoid this problem? Perhaps should I be drawing all alleged "lines"
> merely as extremely narrow rectangles?
Yep, that is the way to do it. Or, if the library you are using allows
fat lines, then set line width instead of drawing multiple lines.
> Is that how applications such as
> Illustrator and/or Flash/Shockwave work?
Can't say I have the source code for those... So, I can't check. But,
the few libraries whose source I have read all did it by drawing
rectangles instead of lines.
Bob Pendleton
>
> Thanks for the input.
>
> --Scott
>
> Bob Pendleton wrote:
> > On Tue, 2004-11-02 at 08:44, Scott Harper wrote:
> >
> >>I also have a project (in Java) where I'm trying to create vector
> >>graphics, but my problem is in zooming in and out, I always seem to get
> >>inaccuracies at some level. Like, if two solid lines butt up against
> >>each other (at a right angle), at SOME level of zooming in and drawing
> >>the lines you can see a space between the two.
> >>
> >>I wonder, perhaps if this is simply an inaccuracy in Java's standard
> >>Graphics2D routines for drawing/scaling and how the numbers involved get
> >>rounded down to screen coordinates.
> >
> >
> > Yep is is a problem with the nature of all numbers used by computers.
> > Nothing specific to Java, but a general problem with trying to represent
> > an infinity of different values using a fixed number of bits. No matter
> > how many bits you use, at some point it isn't enough.
> >
> >
> >>Needless to say I'd rather not have
> >>to implement my OWN drawing routines when there exist ones already.
> >
> >
> > Wouldn't help unless you write your own arbitrary precision number
> > package and do all the arithmetic using it.
> >
> > They way around this is simple. Instead of drawing two line segements
> > where you know that the end of one is mathematically on the other line,
> > you draw three line segments using a total of 4 points so that the line
> > segments are always abutted not matter what error occurs.
> >
> > *
> > |
> > |
> > *------*-------*
> >
> > In the diagram the stars represent the points that mark the end points
> > of the line segments. Since the central point is shared by 3 line
> > segments the line segments will terminate on that point no matter how
> > it's location jitters around due to numerical errors.
> >
> > If you don't share the point this way, then the end of the vertical line
> > may or may not wind up on the same pixel as a the pixel on the vertical
> > line where you think it should be.
> >
> > Remember, in a computer there are not perfect point and on a screen
> > there are no lines. Only approximations. The difference between a
> > geometric line and a line on a computer screen is much like the
> > difference between a potato and a politician. Some times you find a
> > potato that looks like a politician, but politicians are never make into
> > french fries. :-) I know that was completely absurd, but... really a
> > geometric line is infinitely thin and passes through mathematical points
> > that can only be described using infinite precision numbers. Computer
> > lines are made up of little squares, called pixels, that are so big you
> > can see them with your eyes. And, the position of a pixel on a screen
> > can be described in 32 bits, or fewer, hardly infinite precision.
> >
> > A good understanding of mathematics really hurts you when you are first
> > learning computer graphics. After that, it becomes invaluable.
> >
> > Bob Pendleton
> >
> >
> >>Anyway, please answer Florian's question before addressing mine.
> >>
> >>--Scott
> >>
> >>Florian Hufsky wrote:
> >>
> >>>Hi,
> >>>
> >>>i'm thinking about implementing a 2d vector graphics engine (sdl+opengl).
> >>>Before spending hours searching with google, I wanted to ask if there
> >>>are some Standard Resources (eg SVG).
> >>>And are there Reference Implementations or something? Maybe someone who
> >>>found out how the FlashPlayer handles stuff.
> >>>
> >>>Thanks a lot,
> >>>Florian Hufsky
> >>
> >>
> >>---------------------
> >>To unsubscribe go to http://gameprogrammer.com/mailinglist.html
> >>
>
>
>
> ---------------------
> To unsubscribe go to http://gameprogrammer.com/mailinglist.html
>
--
+--------------------------------------+
+ Bob Pendleton: writer and programmer +
+ email: Bob@xxxxxxxxxxxxx +
+ blog: www.Stonewolf.net +
+ web: www.GameProgrammer.com +
+--------------------------------------+
---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html
- References:
- [gameprogrammer] Vector Graphics
- From: Florian Hufsky
- [gameprogrammer] Re: Vector Graphics (seconded request)
- From: Scott Harper
- [gameprogrammer] Re: Vector Graphics (seconded request)
- From: Bob Pendleton
- [gameprogrammer] Re: Vector Graphics (seconded request)
- From: Scott Harper
Other related posts:
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- » [gameprogrammer] Re: Vector Graphics (seconded request)
- [gameprogrammer] Vector Graphics
- From: Florian Hufsky
- [gameprogrammer] Re: Vector Graphics (seconded request)
- From: Scott Harper
- [gameprogrammer] Re: Vector Graphics (seconded request)
- From: Bob Pendleton
- [gameprogrammer] Re: Vector Graphics (seconded request)
- From: Scott Harper