the axis-angle representation of 3D rotation

a single 3D vector, where
• its direction v̂ is the axis of rotation
• its magnitude ||v|| is the angle to rotate by
this can represent any 3D rotation, but you'll most commonly see it represent angular velocity, where the magnitude is the angular speed

this is because unlike quaternions, axis-angle can go beyond a full turn, just like a number representing a single angle can
when representing angular velocity this way, you can also easily add angular velocities together through simple vector addition, decompose it, and project it!

which is pretty neat if you ask me
I've personally found the axis-angle representation incredibly useful when dealing with 3D rotations, and you can easily convert them to quaternions, and in turn use those, without really knowing how quaternions work

I talk about it at length here
many people ask me if you have to learn quaternions to deal with 3D rotation

if you're using an existing game engine, then no, definitely not, which is good news bc quaternions are pretty complex

(no pun intended)

✨ bonus tweet to pre-emptively avoid nitpickers ✨

axis-angle is the general concept of storing an axis and an angle to represent a rotation

encoding them as a single 3D vector is a special case, usually called a rotation vector or euler vector

("not all axis-angle" etc.)
✨ bonus tweet to pre-emptively avoid nitpickers ✨

axis-angle and quaternions can both represent any 3D orientation, but they have tradeoffs that has made most engines prefer quaternions for orientation, only using axis-angle when in need of rotations beyond a full turn
✨ bonus tweet to pre-emptively avoid nitpickers ✨

this rotation vector is not actually a true vector, but a pseudovector, due to its behavior in certain circumstances

eg. the angular velocity of a rolling object remains the same, even if you mirror the object along that axis
✨ bonus tweet to reactively avoid even more nitpickers ✨

yes yes pseudovectors are better represented using bivectors in geometric algebra which is on its own also pretty complicated and something something quaternions are more intuitively represented w. GA & rotors etc. etc.
imagine having to recursively explain every single concept adjacent to a concept in order to explain a concept
see this is the trap many educators fall into, and then every educational resource eventually becomes something with encyclopedic generalized coverage that is so dense people will struggle to even start understanding it
I will not falter

I will stay on my course

I will suffer through the consequences of making well-designed educational resources for my actual target audience

to make it for those actually looking to learn the concept, instead of targeting the audience that knows it already

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Freya Holmér

Freya Holmér Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @FreyaHolmer

3 Oct
I feel like so many movies would immediately improve if you removed 80% of dialogue and made it 4 times as long
make me *feel* the character's motivation, and see their struggles and motivations

I'm so allergic to having it told to me over and over through dialogue when it's already clear contextually
and like, it's so hard to have proper pacing and tell a believable story with actual character development, without too much on the nose exposition, in the space of an hour or two
Read 4 tweets
2 Oct
it's just extremely sus that the only people excited about NFTs are very rich famous people, large tech companies, and cryptobros,

while artists themselves are unanimously against the idea

like shouldn't this raise a huge number of red flags?
if twitter truly cared about artists they could help us with two very simple features:

1. let us preview and edit the thumbnail crop region
2. let us tag individual media as nsfw so people can opt out/not be scared of following people who do both sfw and nsfw art

like that's it
also yes of course there are exceptions, some artists are on board with nfts, I know, but they seem to exist as an extremely small minority, that's what I mean by unanimous

so pls stop with the "not all artists" replies now thx <3
Read 10 tweets
11 Sep
btw these large scary math symbols are just for-loops
dw game dev math mommy's got u ❤
math people interacting with this tweet are just now realizing how little math knowledge game devs and engineers can get by with
Read 13 tweets
10 Sep
generalized bézier curve evaluation using recursion Image
it returns the point on the curve at t, where P is the set of control points, using recursion starting at B(d,0,t), where d is the degree of the bézier curve (number of points minus 1)

in code: Image
it's definitely not optimal, but, neither am I

I'm tired and was just curious to see if I could formulate the evaluation recursively in a short lil snippet~

(it evaluates most sub-points twice, among other things)
Read 5 tweets
22 Aug
apparently I pronounced "osculating" incorrectly in my bézier video and so now I will forever feel shame over this unfixable public mistake
I only ever read it, never heard it

but like who the heck ever hears that word except for an extremely small percentage of the population interested in curvature of parametric equations who somehow heard about it verbally
so technically

I might be introducing this word to a huge number of people who *never* heard of it before, who will now think I pronounced it correctly, and will follow my pronunciation
Read 5 tweets
11 Apr
how do you calculate correct normals when doing vertex displacement shaders?

here's a lil guide/example on the overly complicated but mathematically correct way of doing this~ Image
say you have this simple smoothstep bump, with a radius (r) and an amplitude (a)

the space we're working in will be in uv space, where (0,0) is in the center of this plane

o.uv = the current 2d uv coordinate

d = length(o.uv)
height = smoothstep(r,0,d)*a;
what we need is called the partial derivatives (rate of change) of this function, in order to calculate the normal

now, we're going the unnecessarily accurate route, so we're not using the ddx/ddy functions in the frag shader, that's cheating~
Read 15 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(