My backlog of ‘background’ projects seems to only keep growing and one of the casualties over the last several months has been kinematic experiments in PV3D. Fortunately, Lee Felarca seems to be making some inroads in this area. Check out a recent experiment from his blog - hope to see more from him over time.
Maybe one day I’ll get back to the 2D rigging classes …
The Singularity AS 3 Parametric Curve Library was used by Milo Creative (Paul Argent lead producer) to build some of the games at the BBC CBeebies site [they were responsible for 'Bubble Pop', 'Wake up Shoop', 'Sun and Moon', and 'Music Moods'] I still get some AS errors on the initial buttons, but ignore and go on. An interesting use of computational geometry!
Time is short, but I’ve made a little progress on the k-th order Bezier demo. You can see a good introduction to the method at the Wikipedia page. In the past, I’ve found this to be a good teaching tool for basic computational geometry and programming concepts such as Pascal’s triangle and comparing the naive formula vs. coefficient generation. It’s also a good introduction as to why composite cubic curves are preferred to high-order Beziers.
With high-order curves, numerical issues can arise, the discussion of which is a longer-term goal. The Wikipedia article has a nice animation of deCasteljau’s method, but only for a fixed-order curve. My longer term goal with the demo is to have an interactive teaching tool allowing students to visualize the method for any order curve.
The work-in-progress example is in the BezierNumeric.mxml file that is now in the updated Singularity package (demos folder), which can be downloaded here. As I make additions to the demo, I’ll update the package and eventually put the complete demo online.
I often talk about the series, Numb3rs, at meetings and conferences. There is an interesting book (The Numbers Behind NUMB3RS) that talks about the application of math in the series. It is written at a very high level and is a good read. The supporting blog has links to some learning activites constructed around math used in individual episodes. The page also has information for teachers to download episodes to use in the classroom.
Still clearing out the backlog of requests – if you are currently using PureMVC and are looking for tips/tutorials/etc beyond material and forums on the PureMVC site, here is a quick dump of my bookmarks. I’ll update these on del.icio.us later.
I’m working through a backlog of emails and requests, one of which was the addition of 3D parametric curve graphing in the Singularity library. Spare time is currently at a premium, so I will point out that an AS3 library and tutorial set for this topic is currently available at the MAA Mathematical Sciences Digital library.
Today’s question (problem submitted by a reader) covers the mean value theorem from Calc. I. This one is a bit subtle in the sense that it raises visibility to the existence of a derivative in an interval, even when the function is continuous. The problem was find the point, c, in the interval [-8,8] for the function f(x) = x2/3 that satisifes the mean value theorem.
For review, the mean value theorem states that if a function, f(x), is continuous in [a,b] and differentiable in (a,b), then there exists at least one point, c, in (a,b) at which f(b) – f(a) = f’(c)(b-a). Geometrically, the mean value theroem implies that there is a point in the specified interval at which the slope of the tangent at that point is equal to the slope of the chord between the endpoints of the interval. In terms of velocity, one might say that if a trip over some time interval averaged 60mph, then there must exist at least one point during the trip at which the instantaneous velocity was exactly 60mph.
For the problem at hand, f(b)-f(a)/b-a = 0/16 = 0, so the slope of the chord between the endpoints is zero. The derivative, f’(x) is (2/3)x-1/3, which exists everywhere in (-8,8) except zero. Theoretically, we could just stop here. The derivative is negative in [-8,0) and positive in (0,8]. It is never exactly zero in the interval (-8,8). Like the spoon in The Matrix, there is no point satisfying the mean value theorem in this problem.
Now, it is possible that a function may not be differentiable in an interval (a,b) and still have one or more points satisfying the conditions of the MVT. However, one can not use the MVT to guarantee the existence of such a point(s). In this example, it was game over as soon as you showed the function was not differentiable in the interval.
Several people emailed me about this tutorial, so I thought I’d pass along the link. I haven’t worked through it in detail, but it looks like some really good information for PureMVC users.
Check out Simon Baily’s ‘How to Build a Simple FLV Player in Flash and Flex using the PureMVC Framework.’
In large-scale applications, it is often useful to create independent micro-applications that serve almost as ‘plug-ins’. Suppose a micro-application is developed with PureMVC and is to be loaded into another application itself written in PureMVC. It is useful to think about a well-defined interface for allowing the loading application to provide data to the loaded micro-application and delay the Startup Notification until after loading and data initialization. One thing that’s easy to forget (like I did when copying and pasting code) is to ensure the Loader loads the micro-application into a separate ApplicationDomain (old-school we used to call it function table before these newfangled OOP languages).
PureMVC implements the Facade as a Singleton. If the micro-application is loaded with a context of ApplicationDomain.currentDomain, the loaded Facade will reference the already existing instance present in the loading application (as they both reference the Facade class). Instead, use some thing like,
var urlRequest:URLRequest = new URLRequest(_file);
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.applicationDomain = new ApplicationDomain();
Then, the Facade from the loaded Object will not conflict with that from the loading application. Simple point, but easy to forget, especially when copying loading code from another application into a new Proxy. Hope it saves you some time.