nice, thanks... didnt see it this way

2008/10/15 Peli <[EMAIL PROTECTED]>

>
> int x; // pixel position
> int xscaled = 0; // pixel position scaled by 1000
> ...
> int movement=BULLETSPEED*deltaT;   ///   v*t = d  // don't divide by
> 1000 here
>
> xscaled += movement;  // calculate movement more accurately
> x = xscaled / 1000;  // scale down only when you want to plot
> draw(x);
>
> If you scale by 1024, you can also write
> x = xscaled >> 10;  // divide by 1024. Could be faster than integer
> division.
>
> Peli
> www.openintents.org
>
> On Oct 15, 11:55 am, TjerkW <[EMAIL PROTECTED]> wrote:
> > On 15 okt, 00:48, hackbod <[EMAIL PROTECTED]> wrote:
> >
> > > The emulator in no way tries to emulate the performance
> > > characteristics of real hardware.
> >
> > > For this and many other reasons, every developer should run their
> > > application on real hardware before considering it to be ready for for
> > > release to the public.
> >
> > I do not have to money to buy a android phone.
> > I thought the emulator emulates a real phone, too bad.
> >
> > > Re:
> >
> > > > I thought about decoupling the movement from the framerate (speed =
> > > > pixels/second), but this
> > > > requires the use for floats, which make the calculation rather slow.
> >
> > > In a game you should never tie the speed of movement to the frame
> > > rate, because that will of course vary across different hardware.
> > > Even if we were doing a "google phone" and completely controlling the
> > > hardware, we'd want to release new hardware in the future that goes
> > > faster, and your game then wouldn't work well with it.
> >
> > I understand that.
> >
> > > Also there should be no reason to need floats to deal with this, you
> > > can use fixed point integers.
> >
> > How should i do it.
> >
> > Supposei have the following:
> > int BULLET_SPEED=30; // 30 pixels/second
> >
> > // then on a frameDraw
> > long deltaT=thread.getFrameTime(); // the time it took to move to a
> > new frame, in millis
> > int movement=(BULLETSPEED*deltaT)/1000;   ///   v*t = d
> >
> > The problem here is that movement is always zero because the devision
> > is done with 1000 (1 second).
> > So either i use this:
> >
> > int movement=(int)((BULLETSPEED*deltaT)/(float)1000);
> >
> > Which required FLOATING POINT calculation.
> >
> > Or i make the bullet speed a float. But this also requires floating
> > point calculation.
> >
> > So how is it done, without the need of floating points?
> >
>


-- 
--
Tjerk Wolterink @ GMail

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to