[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: