Some time ago I came across this wonderful and detailed article about BiArc-Interpolation. BIARC
In it there is also source code that I ported to VB6.
Unlike years ago maybe today I would have written it a little differently and better, anyway the sharing of it could be interesting.
![]()
Why would you want a circular interpolation? One reason might be that it is pleasing to eye, but it also has some practical use. If you are making a level editing tool that places roads (or making a game with procedural roads), you will may want turns to resemble their real-world counterparts. A second example, and the one I most often run across, is generating trails behind swords. Sword swings are often animated very fast. You only get a few sample points as the sword arcs through the attack. If you play the animation in slow motion, you'll find that the tip of the sword takes a rather circular path. By generating circular arcs between the sample points, a clean trail can be generated.
DOWNLOAD: GitHub Repo
(vbRichClient RC required)
In it there is also source code that I ported to VB6.
Unlike years ago maybe today I would have written it a little differently and better, anyway the sharing of it could be interesting.

Quote:
Why would you want a circular interpolation? One reason might be that it is pleasing to eye, but it also has some practical use. If you are making a level editing tool that places roads (or making a game with procedural roads), you will may want turns to resemble their real-world counterparts. A second example, and the one I most often run across, is generating trails behind swords. Sword swings are often animated very fast. You only get a few sample points as the sword arcs through the attack. If you play the animation in slow motion, you'll find that the tip of the sword takes a rather circular path. By generating circular arcs between the sample points, a clean trail can be generated.
DOWNLOAD: GitHub Repo
(vbRichClient RC required)