A Hommage to 'Sketchpad' (by Ivan Sutherland)

As mentioned at this post, here I'm trying to "reinvent on purpose" (as Jens explained in his talk)...

Whoa, that's quite an undertaking! I can't wait to see the picture-as-object stuff, which will definitely justify my argument to Jens a while ago that it should be possible for a program to generate permanent clones. :~) The ability to turn a picture into a costume, plus the ability to clone sprites, will make this much easier for you than it was for Sutherland (although still not easy!).

Easier things first, harder ones later, if at all.

I know, calling this humble project a simulation is over-stretched.

Maybe "inspired by hommage to Sketchpad" would be a more suitable title.

I changed the title.

Well, as I said, if you tried to do this using only the tools available to Sutherland, it would really be a moonshot. As it is, maybe you'll lose interest before you finish it, but I don't think you'll run into any brick walls.

The hard part won't be the cloning of a part, such as that rivet, but rather the shaping by constraint relaxation -- the way he got the rivet to sort of wiggle around until everything fit.

If I remember correctly, he manually selected the lines he wanted to become either purely vertical or purely horizontal, and then the program somehow made sure that the point A's and point B's X coordinates both gradually moved towards the average X value, if he wanted the line to be vertical. Or, in case he wanted the line to be horizontal, the Y coordinates gradually moved towards their average Y value.

I think it was more general; for example he could specify that the two diagonals of the rivet are equal, or that two lines are perpendicular even though they're not horizontal or vertical, etc.

Yeah, the constraint-solver part will be the hardest. Oh, btw, we can programmatically make clones permanent since August 2019.

Yeah I know, that's why I said "a while ago."

That would be a moonshot for me, so let's keep it simple. I only am aiming at making them simply either vertical or horizontal. That's good enough for me.