pengkuan said:
I’m not in game programming and I do not know code. So, I cannot provide code to show the thing. But I think that if in mathematics, we have fewer operations, in computing we will consume less time. So, I provide you with the formulae that show that there are fewer mathematical operations for computing rotation with my method.
Oh, i have missed this post yesterday with my former response, which was based on assumption you would be no programmer, eventually.
Fewer operations means less time in general, yes.
pengkuan said:
Let me explain the joined image of formulae. When computing using trigonometric function, we have to compute cosine and sine for the N+1 thetas.
I think you get this wrong. Figure one shows how to construct a rotation matrix from given Euler angles. But this does NOT mean we commonly use trig operations in combination with matrices, or rotations in general.
It is totally common to construct the basis vectors geometrically, avoiding expensive trig ops. One example is how to construct a ‘look at’ matrix, which seems to be the same (or a very similar) idea you propose in your paper.
If somebody has Euler angles data (which usually comes from human interface input, e.g. one animation curve for each angle), then there is no way around of using trig to convert this data into 3x3 matrix, quaternion, or even your custom 6 number representation of a rotation, i'm sure of.
But we don't do this at runtime. Instead we convert Euler angles and key frames e.g. into a sequence of quaternions as a preprocess, and that's the animation data we ship with our games. No more trig is needed when working with this final data.
What we do at runtime with rotations is mainly two things: 1. Rotate lots of points (e.g. vertices of a character) 2. Rotate orientations (e.g. upper leg frame also rotates lower leg and foot bones)
None of those tasks require trig, no matter if we use matrices or quaternions.
We also avoid trig in our runtime simulations, e.g. rigid body physics, ragdoll physics, vehicles, etc.
pengkuan said:
Edgar Malinovsky has shown that multiplication wins against trigonometric function. He computed using multiplication instead of trigonometric function to generate 3D fractals objects. He noticed a real acceleration of computation speed. The images of these objects are here as proof.
Ofc. avoiding trig is a huge win. But to say it clearly: Only beginners use trig in cases it could be avoided, if performance matters.
Early in your paper you propose the concept of ‘Mixed multiplications and mixed product’. To be honest, it almost looks like you have figured out something, and then you think it's a new invention?
It's not new. We all know and use this concept for ages. Some people see such concept as an application of trigonometry (while still avoiding expensive trig ops), others see it as a application of 2x2 matrix math, others see it a s application of complex numbers.
Does not matter, because the math is the exact same no matter how we call it. It also is trivial and obvious, which makes your attempt of presenting this as innovation looking a bit naive. It's fine to explain those trivial things, but giving them new names and presenting them as something new makes no good impression, imo.
pengkuan said:
I have forgotten to mention the rotation around the chest axis. This will make 3 rotations. But, the rotations around the head axis, arms axis and chest axis are more intuitive then Euler's rotations.
Call it x,y,z, or pitch, yaw, roll, or up, left right, or body, chest, stretched arms. The problem remains the same: We need a convention to perform those 3 rotations in specified order, thus we may need conversations between all conventions, and we perform 3 rotations instead just one.
I think it's easy to answer what is the most intuitive, regarding 3D rotations:
If we imagine orientation, we think about the cross visualizing the xyz axis. Because matrices contain those axis directly, matrices are the most intuitive way to represent orientation.
If we imagine rotation, we better avoid the hassle of dealing with multiple rotations in sequence, which gave us all those ‘gimbal lock problems’, coming from people failing to understand this concept in detail.
The easy way is to think of it as a single rotation around a given axis by a given angle. But given axis and angle, we can not work efficiently. So we rather prefer quaternions, because they are pretty close to the axis and angle concept.
So what i think is: It helps to differentiate orientation from rotations, just as much as it helps to differentiate points from vectors.
But that just said for the sake of discussion.
pengkuan said:
This is also an argument for complex multiplication because real and imaginary parts of a complex numbers are stored together. Fetching one complex number is less expensive than Fetching 2 real numbers. Complex number multiplication is surely more optimised than multiplication of 2 2D vectors.
The numbers in a matrix or quaternion are also stored in sequence, so that's no real argument for your method either. It's also just a technical low level detail, not really relevant when looking at the math.
Ok, that's quite some critique from all of us here, but you have to expect this after making claims of a new and better way to deal with 3D rotations.
I think you underestimated our experience on the subject of 3D rotations. What seems new ideas to you is daily practice to us.
Adding this to list of things you should eventually refine on the paper ; )
What's left is to look at your way to rotate a point, and how using 6 numbers affects the necessary instructions to do so.
Maybe i'll look it it in more detail later the day…