Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Programming with Escher (mapio.github.io)
110 points by mapio on May 31, 2017 | hide | past | favorite | 17 comments



The article references the Henderson Escher example, which is nicely surmised in a SICP lecture from '86: SICP-3A video https://youtu.be/2QgZVYI3tDs?list=PL8FE88AA54363BC46&t=3678

I was instantly thrown back to my time watching this series and doing the exercises, which I highly recommend to anyone.


This should be added to the Racket tutorial


Ok for forward drawing, what about backward drawing ? i.e. finding the (u,v) of the fish image from the (x,y) inside the infinite square ?


Beside the fact that the square fits the unit square and is not infinite at all, I'm not sure to get what you mean…


If you draw a line from Point A to Point B, that's called Forward Drawing / Mapping. Basically you will loop over every sample that you know (thanks to a mathematical study) go near your line.

The reverse would be to look at every sample you have and decides its colors based on the line information (the two points) with basic geometric calculus (distance of a point to a line). Applying anti-aliasing / thicks borders is more easy in this way also.

The reverse is called Backward Drawing / Mapping, and is fit for GPU programming and others uses. Some problems are only defined for one kind of drawing and it's difficult to transform it to the other kind. It's like finding the inverse function of a mathematical function, hard.


Sounds interesting… can you provide any reference? A technical/scientific paper, a book, a Wikipedia entry… I was unable to Google it using both "Backward Drawing" and "Backward Mapping" as keywords.


I learned "Forward Mapping" in a scientific paper when I was creating my own morphing and deformations algorithms, I don't remember which paper. (Some Googled links I just found : http://biomachina.org/courses/imageproc/051.pdf , https://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures... )

The term is mainly used for image interpolation and GPU textures. I prefer to say "drawing" because the notion can be extended to anything you want to visualise.

On the internet you can find a lot of visualization by forward drawing on a canvas. But recently there's more and more backward drawing with GPU and shaders (goto https://www.shadertoy.com/ for a lot of examples)


The u,v coordinates are infinite since an infinite number of copies fit in the unit square.


Yes that's what I meant thx The same question goes Escher Infinite Circle. I know it has something to do with Poincaré Disk Model but can't figure it out


reminds me of logo, or line drawing in basic


It might make sense to link to the repository with Jupiter notebook, https://github.com/mapio/programming-with-escher in the rendered output for the convenience of the reader. If the repository points to the rendered output, well Escher.


Actually it is, at the end of the first section https://mapio.github.io/programming-with-escher/#Programming... the sentence reads: "The source notebook is available on GitHub (under GPL v3), feel free to use issues to point out errors, or to fork it to suggest edits. Square Limit and tiles."


Ah, thanks. I missed it.


"Basic algebraic facts about transofmrations"

Heh, was that intentional? X-)


Ahahah, no… it's just that I'm terrible with typos. Thank you for reporting it, now should be fixed https://github.com/mapio/programming-with-escher/commit/a102...


Also this one, below the definition of `nonet()` :)

> to obtain the desider result

Awesome post!


Thanks, I'm flattered by all your positive comments!

Should be fixed now https://github.com/mapio/programming-with-escher/commit/1f04...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: