[A89] Re: Graphing
[Prev][Next][Index][Thread]
[A89] Re: Graphing
You can only graph a hemisphere
x^2+y^2+z^2=r^2
+/- sqrt(x^2+y^2-r^2)=z
You can only graph one of the halves at once, and they don't look all that great anyway.
jeff
--- Dick Mattea <dickmattea@hotmail.com> wrote:
>
> Is it possible to graph spheres on the ti-89?
> If so, what is the formula?
>
>
> >From: jeff <jefromi42@yahoo.com>
> >Reply-To: assembly-89@lists.ticalc.org
> >To: assembly-89@lists.ticalc.org
> >Subject: [A89] Re: filling ellipses
> >Date: Mon, 9 Jul 2001 16:30:30 -0700 (PDT)
> >
> >
> >It DOES work correctly, and does not test every pixel; it draws lines
> >across when it gets done. I
> >agree though, it is slow.
> >jeff
> >
> > > Now, as for why the "formula" algorithm is a very, very poor (and very
> > > slow!) solution:
> > >
> > > 1.) It tests each pixel individually. Other algorithms have no need to
> >do
> > > this, and compared to them you're looping through an absurd number of
> >times.
> > > I see that you're taking advantage of the symmetry to only test 1/4 of
> >the
> > > pixels, but that's still excruciatingly slow.
> > >
> > > 2.) It relies heavily on multiplication and division. Much of computer
> > > science revolves around circumventing those operations, since they are
> >two
> > > of the slowest operations a computer needs to perform. The beauty of
> >the
> > > Bresenham ellipse algorithm is that really only requires two
> > > multiplications, total (the multiplications by powers of two will be
> > > converted into bit shifts, and are therefore not multiplication after
> > > compilation) and _no_ division. I would assume that TI uses this
> >algorithm
> > > internally.
> > >
> > > 3.) It uses floating point operations. Once again, the other algorithms
> >do
> > > not need this.
> > >
> > > While the code you have written will work with a modification or two, it
> >is
> > > entirely the wrong approach and should be simply scratched.
> > >
> > >
> > > Now, IF you were to get the Bresenham ellipse algorithm that Olle
> >pointed
> > > out to work -- you'd have to find another implementation, since the one
> >Olle
> > > pointed out seems to have not worked when you tested it -- and IF you
> > > changed it to use lines, as was suggested, it STILL would not work with
> >XOR!
> > > That's because, as long as you could have two horizontally or vertically
> > > adjacent pixels, then you're bound to have overlapping lines. Once
> >again,
> > > XOR does not like overlap.
> > >
> > > You are then left with one solution -- draw the a solid ellipse in a
> >buffer,
> > > then XOR it onto the screen, just as I suggested in the first place.
> >And as
> > > long as you're doing that, you can the fast, working TIOS ellipse
> >drawing
> > > routine.
> > >
> > > So, in the end, you're left with only one way to draw a reasonably fast,
> > > filled ellipse using XOR -- exactly what I suggested yesterday. I
> >suggest
> > > you overcome your virtual screen stigma, since it's certainly more than
> >easy
> > > enough to use them.
> > >
> > > As for XORing a VS onto the actual screen, that should be relatively
> >simple:
> > >
> > > void xorScreens(void *VS) // I think this should work
> > > {
> > > unsigned long *VSptr = (unsigned long *)VS;
> > > unsigned long *screenptr = (unsigned long *)LCD_MEM;
> > > int i;
> > >
> > > for (i=0; i < (240/8*128)/sizeof(unsigned long); ++i)
> > > *(VSptr++) ^= *(screenptr++);
> > > }
> > >
> > > -Scott
> > >
> > >
> > >
> >
> >
> >__________________________________________________
> >Do You Yahoo!?
> >Get personalized email addresses from Yahoo! Mail
> >http://personal.mail.yahoo.com/
> >
> >
>
> _________________________________________________________________
> Get your FREE download of MSN Explorer at http://explorer.msn.com
>
>
>
__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/
References: