Geometric Algebra - 3D Rotations and Rotors

Поділитися
Вставка
  • Опубліковано 2 гру 2024

КОМЕНТАРІ • 74

  • @jeanhealey1354
    @jeanhealey1354 7 років тому +3

    WOW! I really enjoy all of these videos. I'm not significantly educated in mathematics and the idea of something that needs to do a 4pi rotation to return to its initial state is something that completely blows my mind and I commend the creator of these videos for simplifying these complex ideas into something that a lay-person like me can play around with and (sort of) understand. AMAZING STUFF!

  • @albat6538
    @albat6538 5 років тому +7

    @Matoma, I can't thank you enough for your insightful videos on geometric algebra. This approach is very intuitive and saves a lot of time.

  • @danielkuntz8141
    @danielkuntz8141 6 років тому +3

    These videos are brilliant! Thank you so much for putting them together. As an engineer who has used complex number and rotation matricies for a ton of stuff, I really appreciate this new conceptual understanding that geometric algebra gives me of them! You make it very easy to understand! I have binge watched all these videos up to this point in utter fascination and don't plan on stopping. Good work!

  • @chimetimepaprika
    @chimetimepaprika 4 роки тому

    This is one of my favorite channels ever.

  • @jaca2899
    @jaca2899 4 роки тому +5

    1:04 YOU HAD A CHANCE TO WRITE UWU

  • @kevinportillo9882
    @kevinportillo9882 3 роки тому

    I had so much trouble understanding why rotations are often in that from. This is so simple to follow an understand. Thank you!

  • @jamesmarlar4231
    @jamesmarlar4231 7 років тому +1

    I hope you continue this series all the way through Geometric Calculus.

  • @sdmartens22
    @sdmartens22 7 років тому +6

    Your content is among the best on youtube. I feel like i didn't get a good intuition of what rotors are when not paired with their counterparts. You mentioned there were two ways to perform any rotation theta, is the second way rotating the other way two pi minus theta? Thanks for your time!

    • @Math_oma
      @Math_oma  7 років тому

      +Shannon Martens
      Thanks! There's a lot to say about rotors, so what they are shouldn't be self-evident from the video other than that I form them by multiplying even numbers of unit vectors and in G(3) they can all be written in that exponential form with an angle and unit bivector. The observation about the two possible ways to rotate, one using simply theta or the other using 2pi-theta (but rotated in the opposite _sense_) is a good one. If you want, you can identify one rotor for each sense of rotation - two different rotors but equivalent action upon vectors.

  • @jamesking2439
    @jamesking2439 5 років тому +1

    Thank you for creating these videos! I was able to implement rotors in my engine after watching them.

  • @thomaskaldahl196
    @thomaskaldahl196 3 роки тому +4

    48:53
    I'm angry I didn't learn about your awesome channel sooner >:(

  • @annakinderman8135
    @annakinderman8135 Рік тому

    These videos are immensely helpful! We are using Geometric Algebra in our Quantum Mechanics class, and there aren't many resources out there for this topic...

  • @byronwatkins2565
    @byronwatkins2565 3 роки тому

    We can always define rotations in higher dimensions similarly, but the physical significance might be less apparent. The exponents are bivectors in the plane of rotation with magnitude angle/2. How that bivector gets constructed is irrelevant, but given two vectors in the plane, angle/2 (u^v)/|u^v| is such a bivector. Given a vector perpendicular to the plane, angle/2 v I /|v| is such a bivector. In a way the tendency of bivectors to rotate is activated by exponentiating it; however, the reflection through the plane that accompanies it must be reversed afterward.

  • @Vannishn
    @Vannishn 4 роки тому +3

    Hello ! I love your videos, watched the geometric algebra playlist up to here and I have a question. Why couldn't we rotate the projection of a 3d vector u onto the plane of rotation with |u//| exp(theta B) and then add the previously rejected part instead of using the rotor sandwich ?

  • @inv41id
    @inv41id 3 роки тому +2

    Relating to rotating around an axis only working in 2 or 3 dimensions and rotating in a plane generalizing to higher dimensions:
    I (used to) like to think of it as rotations in dimension n happening around an object of dimension n - 1
    In 2D you rotate around a point, in 3D you rotate around a line, in 4D you would rotate around a plane (as mind-bending as that is)
    I have to agree this way of thinking about is much more intuitive

    • @angeldude101
      @angeldude101 2 роки тому +1

      Actually, there's a way of thinking about geometric algebra that in some ways does generalize better using an axis of rotation rather than a plane of rotation, and that mainly comes when you're no longer rotating around the origin. In 2D, rotating within the plane implies that you're rotating around the origin, but if you actually want to rotate around some other point, that's all the same plane. This is the case in what I call "mirror space," where the vectors instead represent mirrors. e₁ and e₂ now represent the mirrors that reflect across the hyperplanes of x = 0 and y = 0 respectively (note I still avoid mentioning "normal vectors" because those are still unhelpful.) Attempting to compose two mirrors like that gives a rotation just like in the version used here, but what plane is it in? It's not in either plane that was composed, but rather it's all the points that didn't get moved by either reflection, which is the line (in 3D), plane (in 4D), point (in 2D), etc where they intersect. And depending on what algebra you're in, this axis can take different positions or even shapes. A circular axis? Perfectly legal with the use of 2 spherical mirrors in CGA.
      It does require expanding the meaning of axis to include a plane in 4D, as well as whatever other esoteric shapes your geometry of choice allows, but it does allow for "rotation" to mean things other than a simple rotation around the origin. Translations are rotations around an axis that lies all the way at the horizon, which is also the line where two parallel planes intersect.
      This way of thinking is standard when doing Projective Geometric Algebra, but it works just as well in almost any other Geometric Algebra that I can think of.

    • @angelmendez-rivera351
      @angelmendez-rivera351 Рік тому

      @@angeldude101That kind of application is better when dealing with affine spaces, not vector spaces

    • @angeldude101
      @angeldude101 Рік тому

      @@angelmendez-rivera351 Affine spaces _are_ vector spaces. They're not spaces of _arrows_ though, but at the same time _vectors are not arrows._ Arrows are vectors, but not the other way around.

    • @angelmendez-rivera351
      @angelmendez-rivera351 Рік тому

      @@angeldude101 That's not correct. All affine spaces have a vector space associated to them, but the association is neither identity nor isomorphism.

  • @allanrocha4647
    @allanrocha4647 3 роки тому

    Awesome well explained videos! thanks and keep it up!

  • @Kelikabeshvill
    @Kelikabeshvill Рік тому +1

    You’re awesome! Please do 4 and higher dimension rotations. It would be great to see how those bivectors that are not 2-blades look like

  • @dougb681
    @dougb681 7 років тому +1

    Fascinating stuff! You mention around 29:33 that Rdagger = Rinverse, and then go on to complete the rest of the video using dagger notation. So what is the purpose of dagger notation? Why not just use inverse notation?

    • @Math_oma
      @Math_oma  7 років тому +1

      +Doug B
      The dagger symbol may be used later to denote _reversal_ whereas in this special case where the rotor is normalized, the reverse is the same as the inverse.

    • @dougb681
      @dougb681 7 років тому

      Cool! Hope you have a chance to add the later material at some point.
      Thanks.

  • @orsobianco1402
    @orsobianco1402 Рік тому +1

    I just discovered this very interesting series of videos,
    and I thank you a lot for this new (to me) presentation.
    I have a small question. Wouldn't it be better to avoid the exponential
    notation e^B.theta for cos(theta)+B.sin(theta)?
    The exponential notation is usually reserved for commutative algebra
    and there is no commutativity here in Clifford algebra.
    This notation can be misleading, since
    e^B1.theta1 * e^B2.theta2 will generally not be equal to
    e^(B1*theta1+B2*theta2) .
    As a simple example, consider exp(Pi/2*e1e2) which is e1e2.
    If exp(Pi/2*e1e2) * exp(Pi/2*e2e3) = exp(Pi/2*(e1e2+e2e3),
    we have e1e2e2e3 = e1e2 + e2e3, thus e1e3-e1e2-e2e3 = 0,
    which is impossible as e1e2, e2e3, e3e1 are bivector base elements.
    Could you please give me your opinion?
    Thank you.

  • @abdwyer
    @abdwyer 2 роки тому

    At 1:12 in the video, I'm just wanting to understand the terminology. Are you saying the word "hit", as in you "hit it on both left and right"?

  • @dsusoftwarecommunity7864
    @dsusoftwarecommunity7864 7 років тому

    Awesome videos! It really helped for me to understand underlying details of 3D rotations! Thanks.

    • @Math_oma
      @Math_oma  7 років тому

      +SideCommunity
      You're welcome.

  • @KieranORourke
    @KieranORourke 7 років тому +3

    Bravo! Wonderful series of videos. I was reared on the concept of an 'imaginary scalar' (two words; one fanciful, the other incorrect), justified by some some annoying Polynomialist insisting on a solution to the almost trivial equation x^2+1=0
    The fact that this produced such extraordinary mathematical richness was, for me, an itch I could not scratch, for decades.
    Geometric Algebra shivers my tiny brain in it's ability to explain, simplify & clarify the structures I use in Physics and Mathematics, and Quantum Mechanics is being re-written in this language with quiet gasps of "Ah! so that's what I was really doing" .

  • @phlimy
    @phlimy 7 років тому

    Thank you very much for this! It's very useful.
    I have a question regarding rotors in G^4. I'm trying to make a 4D rendering engine.
    EDIT: Okay, actually, nvm the question! Rotor-vector-rotor multiplication wasn't that hard! Again thank you very much for this series!
    /* irrelevant now */
    If I understand correctly, in G^3, a general rotor can be defined like this: a + be2e3 + ce3e1 + de1e2
    Which is very similar to a quaternion: a+bi+cj+dk
    To rotate a vector by a quaternion, you can change the vector into a quaternion with 0 -> a, x->b, y->c, and z->d
    That makes it easier since you can then just multiply it as you would with a quaternion.
    In G^4 though, from what I understand, a rotor would be defined like this :
    a + be1e2 + ce1e3 + de1e4 + ee2e3 + fe2e4 + ge3e4 (+ possibly he1e2e3e4 for multiplication)
    Is it possible to convert a 4D vector into a rotor like in G^3 ? If so, how ?
    I have already done a function for Rotor-rotor multiplication and it was very confusing and messy, and it looks like it would be orders of magnitude worse if I had to do Rotor-vector-rotor multiplication...

    • @Math_oma
      @Math_oma  7 років тому

      +Phlimy
      I'll eventually get to higher dimensional stuff in this series but what's nice is that there are no ad hoc techniques needed in higher dimensions. The ideas gained in low-dimensional rotations transfer naturally to higher dimensions.

  • @pronounjow
    @pronounjow 6 років тому

    I think I'm starting to understand why Euler's formula for the quaternions has half-angles instead of full angles, especially after reviewing deriving Euler's formula. I found this pdf slideshow while looking around on Google Image Search that used exponent addition to derive the formula (EDIT: Thanks Angel for your correction; I'll just change the operators on the left of these equations and otherwise leave this post as is) ( Cis(x)*Cis(y)=Cis(x+y) -(resembles)> a^x * a^y = a^(x+y) ; replace a with e^ln(a) and then ln(a) with A, and then you would get A=i, the imaginary unit) before proving the derivation with the Taylor series expansions of e, Cos, and Sin. Of course, there is a video on this channel regarding this topic, so I'll be reviewing that again.
    I really like how this stuff is generalized, and made easier and more intuitive with GA. It's...clicking, at least. 😀

    • @angelmendez-rivera351
      @angelmendez-rivera351 Рік тому +1

      You made a mistake. a^x + a^y ≠ a^(x + y). Rather, (a^x)•(a^y) = a^(x + y), and similarly, cis(x)•cis(y) = cis(x + y). However, both of these are incorrect when it comes to quaternions, because quaternion multiplication is not commutative, and the above formulae only hold when multiplication is commutative.

    • @pronounjow
      @pronounjow Рік тому

      @@angelmendez-rivera351 Oh, thank you for the correction! I've since watched other videos about quaternion multiplication and rotation that made the half-angle thing much easier to grasp, and I also learned that it has something to do with spinors.

  • @darthmoomoo
    @darthmoomoo 4 роки тому +1

    Are rotations of a vector always in a 2D plane regardless of how many dimensions a space has?

    • @daemond8093
      @daemond8093 4 роки тому

      Did you get any answer for this?.. I have the same question

    • @jaredhughes2679
      @jaredhughes2679 3 роки тому +1

      The input vector and output vector, if you put their tails together, form three points, and you can always find a plane passing through those three points regardless of the number of dimensions.

  • @MauritianStruggle
    @MauritianStruggle 7 років тому

    Dude thanks I am covering this in my 3d graphics course.

    • @Math_oma
      @Math_oma  7 років тому +1

      +Mauritian Struggle
      Yeah, this seems to be an important topic for computer graphics people. You might notice that there's a lot of discussion along those lines in my quaternion videos too because that's one formalism for doing rotations (intimately linked to the material in this video).

  • @alanmochel5096
    @alanmochel5096 7 років тому

    Very well done set of videos introducing geometric algebra along with a single application to Kepler's laws of planetary motion. My only complaint is that it stops at video 13.

    • @Math_oma
      @Math_oma  7 років тому +2

      +Alan Mochel
      There will be more videos.

    • @Michallote
      @Michallote 2 роки тому

      @@Math_oma we miss you man

  • @Achrononmaster
    @Achrononmaster 6 років тому

    The other nice thing about GA formulations is that you are dealing only with the algebra acting on itself! This is not widely appreciated. You do not need to select a matrix operator outside of the algebra in order to transform your vectors. I believe this is a huge simplification when formulating quantum mechanics for instance, but few other than Hestenes and the DAMTP group have taken this approach. I think there are still a lot of insights that can be made which the work of Hestene's and Lasenby-Doran et al., have not fully explored. For instance, a lot of the gauge groups should drop out just from the algebra, without any need for invoking quantization, at least the representations for the Poincare-Lorentz group. Any chance you have time to investigate this and give it one of your nice UA-cam expositions?

  • @alfonshomac
    @alfonshomac 7 років тому

    Instant like and a comment for you. Thank you for taking the time. Hi fives.

  • @MustSeto
    @MustSeto 5 років тому

    I'm curious about something, is it possible to have fractions/multiples of rotors?
    If I have a rotor that rotates some amount, can I use it to find another rotor that rotates ~2.3 times as much, or ~0.12 times as much, or whatever? But with a catch: can it be done _without_ calculating any angles?

    • @rajinfootonchuriquen
      @rajinfootonchuriquen 3 роки тому

      You would have to work the angles any way. If you divide a rotor, you are just dividing e^theta*B. Maybe you could use the geometric product form, but to find the pair of vectors, you also have to work the angles. How rotors are not linear, to find the k-times rotation, you have to take de k-power of the rotor. Ex: the rotor(a) which does 1.5 times the rotation of rotor(b) is rotor (a) = exp( theta/2 *1.5B) = (exp (theta/2 B)) ^1.5 = (rotor(b)) ^1.5. it seems like you don't have to work angles, but just remind that exp(theta/2 B) is just cos(theta/2) + sin(theta/2)B, so you are taking the k-power of a multivector which is a function of theta

    • @MustSeto
      @MustSeto 3 роки тому

      @@rajinfootonchuriquen Rotors/Quaternions can be stored as a list of 4 values (one per bivector element plus the scalar), and once you have them you can perform operations on them without referring to angles, including multiplying them, which composes them. You don't _always_ need to think of it or operate on it as being e^theta*B. I've done this much before
      So if you have a "base" rotor, you can definitely use it to rotate by any (positive) integer multiple of it without needing any angles/trigonometry (sin/cos/etc), though I'm not sure if there's an efficient way to do that
      Calculating rotor^(n) by literally multiplying it n times wouldn't be great, but maybe there's a shortcut which doesn't grow with n. That's part of what I wanted, but I also wanted to do it with fractional exponents. I think if the first is possible then so is the second
      Ultimately I was curious if it'd be possible to write a program which implements rotors but never has to use trigonometric functions directly

  • @Michallote
    @Michallote 2 роки тому

    Can we make it so we only have to specify the angle of rotation from the first vector of a unit bivector?

    • @Michallote
      @Michallote 2 роки тому

      Oh now I see I should have finished the video instead of going on a tangent trying to define w in terms of v and theta just to use it for this formula. Much more concise. I have one doubt though. For the rotors unit bivectors the u and v vectors have to be orthonormal as well?

    • @angelmendez-rivera351
      @angelmendez-rivera351 Рік тому

      @@MichalloteThey don't have to be orthonormal. The magnitudes will always cancel out if you use the correct formula.

  • @michaelstark2832
    @michaelstark2832 4 роки тому

    When I multiply by just the Geometric Product, the vector rotates by the angle between the two vectors used to create the Geometric Product(per your example)! Why do I need to multiply by the GP inverse?

    • @cristian-bull
      @cristian-bull 4 роки тому +1

      Because multiplying only by the geometric product doesn't rotate the vector, but the projection of the vector on the bivector plane.
      It would be equivalent if the vector was in the bivector plane. If you are in G(2) that will always be the case, but in G(3) you'd need to be extra careful if you want to use that formula.
      The sandwich using the inverse works in G(3) even if the vector is not in the plane. It's more convenient because is more general.

    • @michaelstark2832
      @michaelstark2832 4 роки тому

      The reason you have to multiply by the inverse is that GA is trying to keep track of the basis vectors as well as the vector itself. In 2D it works with just one GP and the basis vectors come out right. The basis vectors don't come out right in 3D, you get that nasty 123 answer, and there's no way to get rid of it unless you multiply again by the GP inverse. Of course this means that you have just rotated the vector twice so the GP needs to start out 1/2 the angle of rotation value.

    • @angelmendez-rivera351
      @angelmendez-rivera351 Рік тому

      @@cristian-bullThat problem is easily solved by just adding the rejected part of the vector from the plane, though.

  • @porky1118
    @porky1118 7 років тому

    This way you could convert a torque into a rotor. But how can this be done in heigher dimensions where double rotations exist and not all bivectors are blades? The solution seems to be splitting the torque bivector into orthogonal blades, generating a rotor for each of them and multiplying them. But how can a bivector be decomposed? Would be nice if you made a video about that. I don't find anything I understand.

    • @Michallote
      @Michallote 2 роки тому

      I think it's simpler than that. Torque doesn't necessarily rotate it imparts angular momentum though.
      T = I α where I is the inertia tensor and alpha is just angular acceleration. In this case it is very similar to the Kepler problem T = r ^ F and it is a Bivector already

    • @porky1118
      @porky1118 2 роки тому

      @@Michallote It's been 5 years already. I think, what I wanted is to convert angular momentum to a rotor.
      And I think, the solution is pretty simple: It's the same as in 2D or 3D, no decomposition necessary. I do "e ^ angular_momentum", which is always a versor because it's done using multiplication, even if the bivector is not a blade. Only the sin/cos formula doesn't work in higher dimensions.

  • @robfielding8566
    @robfielding8566 7 років тому

    i wrote a bit if python code that uses fraction as its numeric type, and does this double reflection to implement rotations. in real applications, i imagine that you usually have two example vectors (v1,v2) as givens to define the rotation and plane for rotating a vector x. you would then need to calculate the vector v as half-angle between v1,v2. i wasn't able to compute v (in general) without square roots showing up; where you can work completely rationally when you have half-angles as givens.

    • @michaelstark2832
      @michaelstark2832 4 роки тому

      If you set up v1,v2 as the half angle initially, then it's just straight multiplication after that.

    • @cristian-bull
      @cristian-bull 4 роки тому

      if you are doing a 180 degrees rotation, the half vector between v1 and v2 would be 0

    • @rrr00bb1
      @rrr00bb1 4 роки тому

      @@cristian-bull the order matters. say that there is 1 degree from a to b. that means 179 degrees from b to a. it works because the orientation matters. thats why you don't have handedness issues.

    • @cristian-bull
      @cristian-bull 4 роки тому

      @@rrr00bb1 yes, i was talking about his idea of finding a half angle vector when you have two vectors who describe the full rotation.
      I assumed he averaged the vectors. Don't know why I assumed that, no average needs square roots.

    • @rrr00bb1
      @rrr00bb1 4 роки тому

      ​@@cristian-bull half-angle between arbitrary length vectors requires normalizing the two vectors before averaging them (or otherwise dealing with their different lengths), and normalizing that (or making the two the same length). there might be a way to get the normal in between the two of them, but i could not find a way.

  • @sansamman4619
    @sansamman4619 7 років тому

    who is that guy in the beginning of the channel intro

    • @Math_oma
      @Math_oma  7 років тому

      +san kitty
      That would be the eternal lolcow known as Alex Jones.

  • @Erhannis
    @Erhannis 4 роки тому

    "Leave your angry comments" hahahahaha, sorry; I already did that earlier on in the evening; I'm blowing through here trying to find a very brief explanation of like the one important detail missing from the explanation I got earlier

  • @CouchTomato87
    @CouchTomato87 Рік тому

    Is it fair to say that the imaginary numbers i, as is classically taught, is a very special number in an "imaginary axis" that squares to -1... but rather broadly, just a bivector that happens to act as a pseudoscalar (i) in 2D and a pseudovector in 3D? In other words, the notion of "imaginary numbers" is misleading to begin with? I'm fascinated with GA because before I learned about it, I theorized that a single number 'i' does not make sense in 3D because there are an infinite number of planes on which you can rotate a number (such as x = 1) and square it to make negative 1. My idea was that each of these planes could be defined as their own imaginary number, much like how quaternions defines 3 imaginary numbers, and thus the "imaginary" part is actually simply real but defined by the plane spanned by that imaginary number. Now I know that these planes I've described are simply bivectors!

    • @angelmendez-rivera351
      @angelmendez-rivera351 Рік тому

      You're taking the word "imaginary" in the name far too literally. It's just a name, nothing else.

  • @anon7977-z9l
    @anon7977-z9l 3 роки тому

    Et tu Brute†

  • @wolftribe66
    @wolftribe66 3 роки тому

    hope this angry comment helps the algorithm