A spline is something alike\n\nS(t)=Sum_h(Bh(t)*Ph)\nPh being knots parameters h. \nFor cubic hermitian spline S(t)=P0*B0(t)+P1*B1(t)+T0*B2(t)+T1*B3(t), P0,T0 being position and tangent of knot 0.\n\n__The greedy algorithm__
I'll be glad to help on math problems or implemenation problems [[Contact Ash: devashes@free.fr|mailto:devashes@free.fr]]
Introduction Projects Contact
Simple Hermite spline S knot lnsertion at a time t... \nNote that unless t=0.5, inserted knot will have 2 differents half-tangents:\n* use Least Square Method to find S1+S2=S\n* (easier to perform) say we have S=(P0,T0; P1,T1) just compute the spline position P and tangent T @ t... And make (P0,T0; P1,T1) becomes ( P0,T0*t; P,T*t; P,T*(1-t); P1,T1*(1-t)). That's it.
These are different representation of splines:\n# [[Hermite]] is using Position and Tangents as knots. Spline journeys through knot positions. Interesting because Tangents give great flexibility to approximate non continuous speed curves.\n# Cardinal is using position knots and a tension parameters (tangents are computed using positions and tension).\n# Catmull Rom is only using position knots (tangents are computed straight forwardly from positions). Drawback is they dont accomodate very well when approximating non continuous speed curves.\n# Kochanek-Bartels (TCB) is using Position knots and 3 parameters (Tension Continuity Bias) to define tangents.
Feel free to have a look at [[Spliner.cpp|./Spliner.cpp.html]]. You can download it by right clicking [[Spliner.cpp|./Spliner.cpp]]\nThis is a test bed for approximating values using cubic splines (hermite with half tangents). Many comments inserted into this file, and see [[Approximation Theory]] for some other details.\n__History__\n<<<\n** 31/07/05: \n+ Added greedy linear approximation for comparison purposes\n+ Added templatization of various functions to support various interpolation (single float or vector4)\n+ Test2 is now approximating the 4 components of quaternions with hermite spline\n** 30/07/05: \n+ First addition of Spliner.cpp\n<<<
As a game programmer, i often have to resolve every detail of implementation, scientific papers dont write about. I'll try here to offer some hints and details... \n\nI'm specialized in animation and cinematics, but maths, particles, 3d rendring, occlusion or lighting systems are or were of my competence too.\n\nFor those interested by (merely :) efficient C/C++, involving some maths and trickeries, i'm giving here some research results or clues, motivated by, sometimes, the lack of concrete readings on the web.
After some 8 years doing 'something else' in C/C++, Java was a real pleasure to get back into:\n>- close to c/c++: smooth learning curve\n>- fast compilation\n>- cool 'not-arrogant' day to day editing tools (JME)\n>- reliable, and complete crash reporting infos\n>- tons of academical resources\n
[[Introduction]]\n[[Projects]]\n[[Resume]]\n[[Contact]]\n[[StyleSheet]]\nRssFeed\n
> [[Spline approximation|#Splines Implementation]]\n> [[Document indexing|#Indexing]]\n> [[Computer assisted vision|#Vision]]\n
* http://www.cubic.org/docs/hermite.htm , http://www.cubic.org/docs/bezier.htm , clear and simple, first look into splines\n\n* http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/INT-APP/CURVE-APP-global.html\nthe most comprehensive course on the approximation subject using spline. All the theory is there. Complete site at http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/ \n\n\n
And because we're at it, why not have a glance on my resume ? here.
You can SaveChanges if you're using FireFox or InternetExplorer:\n# if you're using Windows XP you might run into ServicePack2Problems\n# right click on [[this link|empty.html]] and select 'Save link as...' or 'Save target as...'\n** do ''not'' try to use the File/Save command in your browser because of SaveUnpredictabilities.\n** choose where to save the file, and what to call it (but keep the .HTML extension)\n# open the newly downloaded file in your browser\n# click the 'options' button on the right to set your username\n# edit, create and delete the tiddlers you want\n** you can change the SpecialTiddlers to change the SiteTitle and MainMenu etc.\n# click the 'save changes' button on the right to save your changes\n# TiddlyWiki will make a backup copy of the existing file, and then replace it with the new version\n
About dead and living code...
Dev. Ashes
http://alimbourg.free.fr/
Speaking approximation for smoothness or compression purposes, you'll probably have to deal with them (splines). For example, working in the animation field, i often have to //bake// a movement, then reproduce it using an optimized representation.\nInthis case, curve optimization should probably be a more appropriate term.\nI was using 'linear' approximation, but if precision is important and/or source curve is naturally smooth: you'll end up with a important number of keys.\n\n[[Hermite, Cardinal, BSpline...]]\n[[Approximation Theory]]\n[[Storage]]\n[[Implementation]]\n[[References]]
Hermite Spline is in the form of:\n {{{value=P0*b0+P1*b1+T0*b2+T1*b3}}}\n\nWhen approximating data with a serie of N splines, the need of storage is:\n N*[sizeof(Real)+sizeof(Data)*4] which includes a key time, and [P0,P1,T0,T1]\n\nin C/C++:\n{{{\nstruct HermiteSplineKey\n{\n Real Time; //float, double, ...\n Data P0, P1, T0, T1; //float, vector3, quat\n}\n}}}
#titleLine {\n color: #F7D634;\n background-color: #90AA10;\n }\n\n//#displayArea {background-color: #ffccff; }\n#mainMenu {border: 1px solid #ffff88; }\n#commandPanel {background-color: #008800; }
Vision was my very first working field as an optical motion capture R&D guy. I decided to get back into that, becoming older ;) and probably more comfortable with mathematics.\nHow to retrieve information from a video or a pair of photo... Here are some applications projects concerning computer vision.\n\n> [[Java: A simple FrameGrabber]]