a ball is much bigger than a peg or a box. Worth adjusting?
the relative sizes can be seen here: http://www.sketchpatch.net/livecodelab/index.html#bookmark=conditionalsTutorial
Right now the default Three.js sizes are used, but it would be probably cool to a) make them roughly the same size b) make them so when all three are drawn, they can still be identified as three different primitives.
I.e. right now the sphere contains the cube contains the cylinder. So drawing all three of them just shows the sphere. Would be cool to size them so to be able to distinguish the three shapes instead.
Gee this one took ONE YEAR :-)

:) Nice!
But won't this make it hard for a user to create objects exactly adjacent in grids and such? Like peg; move 1,0,0; peg ?
On one side I like that they don't occlude each other, but yes there is some arbitrariness and it causes the elements in a grid to have overlaps/padding.
I have two proposals to rationalise this somewhat:
-
Maybe we could say at least that when one does a grid one expects always some pleasant padding between the elements, rather than having them touching or overlapping? So at least there is some consistency? So in that case we could proportion everything slightly smaller so there is such padding.
-
Or, another solution would be to only have the spheres to touch. The other overlapping elements look fine to me, if there is no stroke at least, (slightly overlapping pegs/boxes/rects/lines are almost indistinguishable from touching pegs, while for spheres the difference is noticeable). That could be another criterium.
That said, rationale 2) could be more difficult to maintain as we introduce more shapes, and 1) seams simpler and more scalable, and is one wants "touching" elements (by width or by height? that's arbitrary too) then he/she will have to just inline an appropriate scale.
I think I prefer 1) - padding all the way, what do you think?
It's tricky :)
I think that for some shapes, like rects and boxes, there are surely situations where you want them to align precisely:

Like you said "he/she will have to inline an appropriate scale". The problem with that is that the user would have to know exactly what that scale is: scale 1/1.2. On the other hand, to introduce a padding where there is none can be done using any arbitrary number.
The problem is mainly just that: assuming as little as possible about what the user wants (touching/padding/ overlapping); touching (c.q. unit shapes) is kind of a singular case, which makes it the least arbitrary, and the others are easy to derive.
There might be another solution, what if these proportions are the default sizes? Such that sphere 1 still gives a unit sphere?
Yes I like your last solution. scale of 1 will make things to align.
What if he/she doesn't use scale of 1? Which behaviour should we chose of 1) and 2)?
I'd say 1) so we cover the "nice padding" case?
Yeah I think that's best.
I feel like the best answer to this, and to help with scaling/moving in general, would be to just define a single unit measurement which should then be referred to everywhere.
I must admit that I don't know that much about the internals of the 3D system, having left it all to Davide, so don't know how easy that is, but if we knew that all the shapes were 1Unit wide, and that move 1 in any direction will use that measurement, then a lot of these scaling questions would be easier to reason about wouldn't they?
@rumblesan indeed they would, and it would be easy to do, the thing is that I find it weird to type box peg line and to see only a box. So what we are proposing now is that all primitives with 1 like box 1 will be "rational" in the sense you mean it of tiling edge-to-edge by moving them of "1". But just typing box will make it so the primitive will be slightly smaller than 1 (the tiling would have a padding) and they would all be visible when painted together as box ball peg line rect, like in the first picture above.
reopening this one, as there is a bit of work left to do.