ha, thank you for your honest feedback. My intended audience is not PhDs or math majors, it is high school physics teachers, practicing engineers, programmers, precocious high school students, etc. Many of these people benefit from some definitions.
I include 3 sentences defining a scalar so that I could introduce the concept of grade.
I include a few sentences defining a vector because just read the comments here and you'll see there are many definitions of vector and I want to specifically call out the one I care about in this post. I am also using a nonstandard, color-based notation throughout the article so it is helpful to take a concept that people already know just to demonstrate my notation. This also lets me introduce the 3D interactive illustrations.
Did you read the rest of the article or were these two definitions so objectionable that you quit?
Hi. I wrote whole section on the history of GA and what happened and why it isn't already the norm, but I chose to remove it because the article is already far too long, and I don't think that my intended audience (engineers, compsci people, university undergrads) would care about the history. Apologies that wasn't what you would have preferred.
author here. I was mistaken about the 5 degrees of freedom bit. Bivectors have three. I'll fix the text tonight. I'm sorry you wasted ten minutes on my nonsense.
yep that paper is extremely impressive! I would love to implement that approach as well, but it is much more computationally expensive. In the Q&A after a talk from that paper's author, he mentions that it takes about 6 hours for the algorithm to run. The approach I took, modeled off of Yue et al, takes about 30 seconds. The trade-off is that the Schwartzburg paper is capable of much more general purpose remapping. It does not require continuity, which is why that paper results in ray folding which you can see as creasing in the lens.
Author here. That's a fantastic question! I think you're right that a better solution would include adding curvature to the individual "pixels" in the lens mesh. Unfortunately I don't know how to manufacture anything with microstructure that small! The microlenses would need to be of order .2mm by .2mm square and have curvature that is very slight, because the image plane pixel is about 20 cm away. Perhaps this could be achieved by choosing a ball-nose machine tool of the exact right radius and sweeping it back and forth in the channels formed between the "pixels"? It would leave a grid of tiny features that might just get the job done!
As is I just gloss over that completely and I don't address it. So tiny, lone, bright pixels end up more smeared than I'd like.
You are correct! The simulation as written does not handle the no slip condition. The simulated "air" is inviscid and irrotational. You would need to tackle a few more things in order to have a really accurate simulation.
Thanks for calling this out, I thought it might cause confusion. Matrices are super weird objects because they don't fit nicely into the {scalar, vector, function, operator} classes that maybe we're used to. A matrix is a function in that it can take in a vector and map it to a new vector. It is also an operator in that it can take in some other matrix (a function!) and give you a transformed matrix (a new function). It is also a function in the sense that it can map vectors to scalars, where the input vectors (x, y) are the coordinates and the scalar stored there is the output. All of this gets further complicated by the fact that the elements of a matrix can be scalars, complex numbers, or even matrices! They are really strange objects and maybe I'll write up a whole post just about that strangeness.
Very cool! A modern analogue might be LinuxCNC, which runs on old PCs in a realtime manner, generating pulses and sending them out the parallel port, or sending commands over ethernet to a dedicated step generator board for ultra accurate timing. What's old is new again!