Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!

We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.

Allen Chou

Member Since 15 Jul 2010
Offline Last Active Nov 11 2014 05:33 PM

Posts I've Made

In Topic: Interpolating Quaternions with Circular Blending

18 April 2014 - 09:37 PM


A bisector of a line segment connecting two points on a circle always goes through the center of the circle.

My comment was regarding the length of n1 and n2, not their direction. The illustration implies that the lengths of n1 and n2 are each equal to the distance between the respective midpoints and the center of the circle. E.g., ||n1|| == ||m1 - C||. If that were true (which I believe it is not), then finding the center would be trivial.


I'm just commenting that the illustration is misleading in that regard. Showing shorter vectors n1 and n2 (i.e., an unknown distance between the vectors heads and the center) would better highlight the need for the parameterized bisectors. Something like the following:





Ah, I see what you're talking about now.

You are right. n1 and n2 should not have the exact distance from the midpoint to the center of the circle C.

The figure is kind of misleading.

My bad tongue.png

In Topic: Interpolating Quaternions with Circular Blending

18 April 2014 - 08:25 PM

I'm currently working on an animation editor and am just at the point of implementing an algorithm for interpolating rotations between keyframes, so I find your article of particular interest. Thank you for posting it.


A comment regarding the illustration showing the circle with center C, three quaternions (q1, q0 and q2) on the perimeter, and bisectors n1 and n2 at midpoints m1 and m2 respectively: the illustration implies that n1 and n2 meet at C. That is not always the case, is it? I assume that it not the case, otherwise parameterized bisectors would not be needed.


A bisector of a line segment connecting two points on a circle always goes through the center of the circle. Given three points on the circle, we need two bisectors of line segments connecting point pairs on the circle in order to find the center of the circle. The purpose of parameterizing the bisectors is to find the intersection of the bisector, which is the center of the circle.


I should probably add some comments to clarify. Thanks for pointing it out.

In Topic: I gave a lecture on constraint-based physics, and here are the slides.

18 April 2014 - 01:27 PM

Nice work Allen, I'm pretty sure you're not going to have a problem getting a job after graduation.


Actually, I already did. I'm going to work at Naughty Dog laugh.png

In Topic: Quaternion Basics

09 April 2014 - 09:30 PM

About SLERP, this article is usually worth looking: http://number-none.com/product/Understanding%20Slerp,%20Then%20Not%20Using%20It/


By the way, the thing about SLERP is not that it interpolates through the shortest path, but the fact that it ensures constant angular velocity.


In fact using the formula of your explanation alone you are NOT ensuring that you take the shortest path. For SLERP to ensure the minimal path the interpolation must be done between quaternions in the same hyperhemisphere.  In order to do that, you need to test whether the dot product of both quaternions is negative and then, if so, negate one of them. And you can do that whether you use SLERP or NLERP.


Thanks for the info. I edited the article a little bit to add that info in.

In Topic: Quaternion Basics

09 April 2014 - 11:48 AM

Though, as mentioned above, the material you discuss can be found elsewhere, I find your article a nice summation of aspects of quaternions applicable to game programming.


A comment on your description of SLERP: although you define the range of t, you do not mention the intent of a SLERP with regard to t. In the context of interpolating rotations, IMHO, you should add something like "With t varying linearly, SLERP provides..."


Good call. I've added a short paragraph commenting on this property.