Sunday, November 6, 2016

Journey

I've restarted my Haskell program to take a more naive approach. Rather than go for optimization with lots of different representations that get saved to prevent recalculations, my new approach is to go for clarity. I found that the prior approach involved a lot of boring code. I was too tempted to automate the production of the boring code, and that became a nontrivial challenge. Anyway, my new code is here, and it is much more readable. Note that though the repository is still called sidegeo, the module directory is AffTopo. AffTopo stands for affine topology, which I believe more accurately describes the math in this blog than my original choice of sidedness geometry.

https://github.com/individkid/sidegeo/blob/master/src/AffTopo/Naive.hs

Perhaps more or less related to my coding efforts, I have taken a new perspective (pun intended) on the definition of polytope. In short, polytope (like creativity) means many things to many people in many contexts. Here are a couple of possible definitions.

If you project your polytope onto a picture plane, it produces a (simpler?) polytope in one fewer dimension. If you consider all possible projections of a polytope, the polytope might be well defined so long as it's projections are well defined. Since polytopes of zero dimension are well defined, this recursive definition might work. I say might, because the projections of a polytope have some relations not captured by simply collecting them into a set.

As another example of defining polytope, start with the usual graph of facets, and add convexity around each facet. My coding experience has increased my respect for directness. On the other hand, without curves we would not know that lines are straight.

1 comment:

Tuna Boy said...

I emphatically state, "Without curves, there would be no human evolution".