Predicting future motion intelligently

J C Lawrence claw at under.engr.sgi.com
Thu Mar 26 15:04:26 CET 1998


A useful follow-up for those not overly familiar with B-splines.

Date: Thu, 26 Mar 1998 17:50:38 -0500 (EST)
From: Dan Stimits <Stimits at cris.com>
To: swd at dogstar.mit.edu
Subject: Re: What ship movement info passes from client/server?

On Thu, 26 Mar 1998, Bert Peers wrote:

> Dan Stimits wrote:
> 
>> This will sound complicated, but is very easy, and is basically an
>> extension of adding the bank.  I don't know if anyone here has ever
>> programmed in Postscript (I love this stack based language...too
>> bad my printer doesn't), but there is something there called a
>> Bezier curve...PEX has support for something similar called a
>> B-Spline curve.B-Splines are very efficient to compute and draw by
>> computers, and Bezier curves in Postscript are what power the
>> graphics display in NeXT computers.  We could get a tremendous
>> smoothness increase in the most lagged net conditions by using
>> these.
>
> I'm afraid I don't think this is a good idea... B-Splines are meant
> to have an interpolating curve without the RungeKutta oscillating
> effect common in polygonal interpolations...  so it makes a great
> tool for tracing out be-here-at-time-t points when building an
> animation, or to fit surface splines through 3D scanner data to
> compress surface descriptions, but I don't feel it's appropriate for
> this task.

...deletia...

Actually, I do understand most of that.  There may be a better way
than B-Splines, but B-Splines are efficient for computers, and the
curves are created by adding discrete points, much like network
packets.  The curve is what would be flown, the control simply gives a
sample of points over time.  If the net lags, the control will simply
not modify the curve quite as soon.  What I'm looking at isn't a large
B-Spline either, just a 3rd or 4th order one, which means a 2nd or 3rd
degree polynomial.  The real beauty of it becomes apparent when you
look at the same data plotted for different orders.  The more lag you
get, the better the smoothing you'll get by using a higher order.  And
both ends will have the data for a spline at any moment in time, so
both will see the same path until a new control point (generated by
the control stick) is added in.  If one end adds it in later than the
other, the weighting will shift too, and things will tend to be
self-correcting without any further intervention or computing.  In its
own way, it is just a self-predicting system...it doesn't interpolate
anything, it just creates a curve based on control points being
weighted in an intelligent manner.  You'd be sending coordinates of
control points, rather than headings.


(~~~~~~~~~~~~~~~~~[ WolfPack Developmers' List ]~~~~~~~~~~~~~~~~~~~~~~)

     XShipWars: http://dogstar.mit.edu/bajor3d/
     Bajor3D: telnet://dogstar.mit.edu:1701
              swserv://dogstar.mit.edu:8472
     IRC: us.austnet.org  Channel: #wolfpack  (Fri, Sat, Sun)

     To unsubscribe, send e-mail to swd-request at dogstar.mit.edu
       with a message body of "unsubscribe"
(_____________________________________________________________________)


--
J C Lawrence                               Internet: claw at null.net
(Contractor)                               Internet: coder at ibm.net
---------(*)                     Internet: claw at under.engr.sgi.com
...Honourary Member of Clan McFud -- Teamer's Avenging Monolith...



More information about the mud-dev-archive mailing list