> Part of the message, aside from just quantifying how limited time is, would be to find enjoyment where you can in your 'mandatory' activities too as they'll represent the bulk of your life.
I wish I could give this comment more upvotes. I'm slowly learning this lesson in my personal life - I wish I could learn it faster, but the goddamn brain is just too much more insistent than the body..
The only thing 'unspecified' guarantees you in this context is 'safe to destroy'. It specifically does not guarantee the safety of any other member functions - only the destructor. So either push_back() or pop_back() could potentially cause UB here (specifically, it's quite possible that the move swaps some internal pointers for nullptr, so you end up dereferencing null here - but morally, it's just never okay to continue using a moved-from object).
The vector is "valid" and that is what carries all the weight here. The vector is still a vector.
push_back is absolutely defined. pop_back might be undefined, because pop_back is UB on an empty vector. If you like, call clear, and be assured of an empty, reusable vector. It's not idiomatic, but it's safe.
Aren't they different, though? When I go into a grocery store, the deal is, they put out a selection of things, I pick the ones I want, then I go home. This is actively trying to manipulate me personally into buying something that is not one of my original desires.
I mean, I guess grocery stores already do this in some ways, in choosing what to feature... they do effectively 'advertise' certain products. But this seems more like it's trying to manipulate my behaviours, rather than trying to fulfill my desires as well as possible. I'm not sure how different it is... but it feels a lot different to me.
A grocery store already manipulates consumers though, e.g. they put the milk at the very back so you have to walk through the store which increases the chances you'll buy something else.
They also place things up high on shelves, or down low - depending on what the item is, what the manufacturer or reseller has purchased in space, who it is marketed to (for instance, certain cereals are placed lower for kids to see).
Part of this is why I prefer to shop at Business Costco for a lot of things. While I am sure a similar tactic is being done, it is being aimed at other businesses - and since I am not a business, it doesn't affect me as much (though it does confuse me why they place certain things side by side - but if you think about it like what businesses are looking for and the type of business - then the placements make more sense).
Right, this is what I was alluding to with 'choosing what to feature'. But I honestly am not sure whether a line should be drawn here, and if it should, where it should be drawn. I know that one feels distinctly creepier than the other, though, so I'm sort of hoping someone chimes in and can clarify my thoughts better than I can :)
I was hoping for an article on nuclear physicists, and how working with radioactive materials when it was still not well understood has left some residual radioactivity detectable in their hair to this day, long after their deaths.
Thank you for posting this, I found it both very enlightening and a pretty fun internet-drama read :D
Interesting that the original complaint of that article/thread and this one are both the same - ie. quaternions are 'too hard to understand', and people 'use them without knowing how they work'. With this being posted so soon after https://news.ycombinator.com/item?id=18310788 , I feel like that complaint is less valid now than it ever has been, but it's kind of interesting to think about why quaternions in particular draw so much fire when, honestly, I found matrices to be equally challenging at first. Is it just an education thing, since matrices are generally taught much earlier? Or is there some intuition in matrices that isn't present in quaternions? Both of them seem to be just 'do this math, then magic happens' unless you think about them a fair bit, and that was pretty challenging for both the first time round imo.
Matrices are linear transformations. Take a bunch of vectors, map them to another bunch of vectors. It's all inherently geometric.
The matrix:
adg
beh
cfj
maps the vector (1,0,0) to the vector (a,b,c), (0,1,0) to (d,e,f), etc... so if you write any other vector as a weighted sum of (1,0,0), (0,1,0), etc... the weights get mapped to the new vectors.
As someone with a background in physics and geometry, it seems bizarre to me to use quaternions to reason about geometry. It's really unnatural. It's basically just a coincidence that the algebraic structure of rotations in 3d happens to look like this. It doesn't generalize to higher dimensions. There is no equivalent to quaternions for 4, 5, 6d [1].
Bivectors discussed in the article, on the other hand, easily generalize to higher dimensions, and are a completely natural geometric concept. (Of course if your thesis is about constructing 4d objects you care about that a whole lot more than if you build a 3d engine...)
Now that doesn't mean it's easier or harder to manipulate one or the other. As they all reference the same mathematical structure it's also not surprising that the code ends up being the same. And given that algebra is more natural for computers, I can see why quaternions might be useful here. But geometric they are not.
There is an N-dimensional generalisation for complex numbers, quaternions and hypercomplex numbers called Clifford algebra. I'm not an expert in that field (coming from physics and optics) but apparently it's not by chance that quaternions are connected with the rotation group SO(3) and complex numbers with SO(2). You can generalize to SO(n) with Clifford algebra.
This is closely related to the exterior algebra, which is where bivectors live. But I don't know much about Clifford algebras either. I didn't know that they are more directly connected to Quaternions. Thanks!
The 'geometric product' mentioned in the article is just Clifford's product. The 'geometric algebra' is the same thing as the Clifford algebra induced by the scalar product.
I think matrices are easier for people to visualize because they can think about them as a vector frame and coordinate transformations.
Quaternions are seen as this abstract 4D space somehow containing 3D space transformations, and people have a much harder time visualizing 4D space. I do not think spending a lot of time trying to visualize this 4D space, like this video does, is the right way to go. Rotors make that method obsolete.
To be honest the hardest part is not understanding single rotations, but understanding how rotations compose.
Thinking about a scalar + bivector as the quotient of two vectors or as the composition of two reflections is easy enough. But that still doesn’t yield a solid understanding of how rotation works – 3D rotation is subtle and tricky, even for people who have pretty good spatial reasoning and a lot of experience working with solid geometry / 3D design.
I have been thinking about the best interactive diagram(s) for giving people a good intuition about that for a long time, and I have some ideas but I still haven’t implemented anything and I’m not sure how well it will work.