|
From: Arjen M. <arj...@wl...> - 2003-08-26 12:17:23
|
Arjen Markus wrote:
>
> Maurice LeBrun wrote:
> >
>
> >
> > Polygon clipping is fairly complex. The issue really raised its head when I
> > implemented zooming in the plplot TK interface and started doing a lot of
> > shade plotting, way back in '94 or so. I worked on it for a while before
> > giving up due to lack of progress even though there were still a lot of
> > problems with it. As an example, run "x16c -dev tk", zoom in on a section and
> > then pan around.
> >
> > Anyway I decided to take another look at the code and noticed right away
> > problems with the existing approach. Emboldened, I set about to improve it
> > and now am happy to say it works much better than before. Grab the latest
> > src/plline.c from cvs HEAD and see if the new code fixes your problem.
> >
> > Note it still does not work perfectly -- at a sufficiently high level of
> > zooming we start to get clipping problems again. These I suspect are due to a
> > fidelity problem, either in clipline() or somewhere else. Anyway no more time
> > to work on it for now.
> >
> >
>
> That sounds great. When I wrote the original e-mail, I started thinking
> how
> this could be improved - I soon realised that a completely general
> solution
> is very difficult/tedious. I will have a look at the new source.
>
> Thanks for looking into it.
>
I just tried with this new version. The result is the same: severed
polygons.
As I am having problems with gdb - it shows very strange lines to be
executed next (see below for a transcript) - it is difficult to make
sure that all is being as it should.
Looking further ...
Regards,
Arjen
-------------------------
Transcript of gdb session
-------------------------
(gdb) break 63
Breakpoint 2 at 0x81d651b: file plfill.c, line 63.
(gdb) c
Continuing.
Breakpoint 2, c_plfill (n=21, x=0xbfffd074, y=0xbfffd014) at plfill.c:64
64 plP_plfclp(xpoly, ypoly, n, plsc->clpxmi, plsc->clpxma,
(gdb) s
plP_plfclp (x=0xbfffcbd4, y=0xbfffc7d4, npts=22, xmin=5461, xmax=27306,
ymin=5461, ymax=22755, draw=0x81cf71c <plP_fill>) at plline.c:551
551
(gdb) n
545 * correct. For the fill cases encountered in plplot, this
treatment should
(gdb) n
547 * the typical return value is 3 or -3, since 3 turns are
necessary in order
548 * to complete the fill region. Only for really oddly shaped
fill regions
549 * will it give the wrong answer.
550
\*----------------------------------------------------------------------*/
551
552 static int
553 circulation(PLINT *x, PLINT *y, PLINT npts)
554 {
555 int xproduct, direction = 0;
556 PLINT i, x1, y1, x2, y2, x3, y3;
(gdb) n
553 circulation(PLINT *x, PLINT *y, PLINT npts)
(gdb) n
554 {
(gdb) n
555 int xproduct, direction = 0;
(gdb) n
557 for (i = 0; i < npts - 1; i++) {
(gdb) n
--- gdb shows the header of a routine I am not in yet ...
|