<JordanBrown>
I just came up with a real-ish world example of why I would want to be able to extract a coordinate from deep inside a geometric construct.
<JordanBrown>
For the calendar, I was musing about the idea of animating a train going around a Christmas tree.
<JordanBrown>
One time, a million years ago, I wrote a specialty CAD program that would let you make train layouts, connecting standard track components together. That would, on its face, be easy to do in OpenSCAD. It would be a lot like the plumbing library that I put together.
<JordanBrown>
But when I did that project long ago, I realized something non-obvious: there are a few combinations of standard track parts where figures don't trivially close.
<JordanBrown>
If you're doing a circle or an oval or most other simple shapes, the track parts meet again perfectly.
<JordanBrown>
But if you do a turn-around track, a switch where one of the tracks on the "output" side loops around to meet the other, standard parts won't match.
<JordanBrown>
Somewhere you have to introduce fudge factors.
<JordanBrown>
I think for the layout I was designing I introduced enough fudge to get the troublesome ends within a half inch or so of each other, and then just bent track until it fit.
<JordanBrown>
Anyhow if you were trying to design a model railroad track in OpenSCAD, you'd like to be able to know the location of another track endpoint, at least to measure how far off you are from fitting, but preferably to introduce a Bézier curve of flex track to join them.
<JordanBrown>
I knew you would be excited.
<InPhase>
A CSG tree would be a terrible way to do that though.
<JordanBrown>
Yes.
<JordanBrown>
Well, maybe. In general there might be ways. In OpenSCAD, not so much.
<InPhase>
Here's the CSG tree for my train track set that I did for a past calendar: https://bpa.st/YCJQ
<JordanBrown>
In general, while you're constructing the CSG tree you could retain pointers into the depths of the tree, and you could calculate the transforms that apply to that point, and you could extract information.
<InPhase>
Find the connecting track you're looking for in that. ;)
<JordanBrown>
That's an interesting interlock strategy. It can't do turn-arounds.
<InPhase>
But I'll tell you how you could do it. Generate your tracks as a list of objects where each one has the geometry of the track plus stores its end-points. Then you just iterate over your objects, use the data you want from the objects, make the extra connector piece, and display it all.
<JordanBrown>
(Just as electric model railroads have to be careful with them.)
<InPhase>
What do you mean can't do turnarounds?
<JordanBrown>
I don't remember the exact model railroad terminology.
<JordanBrown>
I mean a construct where you end up reversed on the same piece of track.
<InPhase>
Like one of those rotating platforms?
<InPhase>
Or a teardrop shaped loop?
<JordanBrown>
yes, teardrop.
<JordanBrown>
A switch where the two sides that you switch between are connected together.
<InPhase>
I suspect I could make a teardrop join piece for this purpose.
<JordanBrown>
There's also a structure called a wye that's sort of equivalent.
<InPhase>
But I only build straight, curved, and fractional curved pieces for this demo model.
<JordanBrown>
Yes, you'd have to have a specialty piece that has a mirrored connector on one end.
<JordanBrown>
Or am I visualizing wrong?
<InPhase>
The connectors are perfectly symmetric.
<InPhase>
You can flip any piece and it's always the same.
<JordanBrown>
Let me think.
<InPhase>
I actually thing that's a superb connector strategy, and you can feel free to steal it if you like. I made it up when I made this, but I had my kids play with it and I think it's better than all the commercial connectors they've played with.
<InPhase>
My core operating theory was that my young kid, just like my kid before him, could not push tracks together axially. So this connector is designed to do what all little kids do naturally, which is put the pieces on top of each other and just press down with their hands.
<JordanBrown>
Which is what Brio (and Thomas the knockoffs) do.
<InPhase>
Yes, but those don't stick. They fall apart.
<InPhase>
Mine stick, and you can pick up the whole track and walk around with it. :)
<JordanBrown>
Also means that it's somewhat harder to take apart.
<JordanBrown>
But yes.
<InPhase>
A bit, but it's pretty easy to get right for kid strength.
<InPhase>
There's a big margin for error between what you can pickup and not fall apart, and a train-aged kid's yanking strength.
<JordanBrown>
Kids do not generall have a strength problem.
<InPhase>
Only a dexterity issue. :)
<InPhase>
But if you're making a set, maybe try printing some of those and give it a test.
<othx>
InPhase linked to "Modular Train Track Set, Standard Compatible, and Customizable by rcolyer" on thingiverse => 5 IRC mentions
<JordanBrown>
No, youngest just turned 18. (But maybe eventually for wife and me. We always liked the trains more than the kids did.)
<InPhase>
I meant mostly the little bits just to see how the connector works.
<JordanBrown>
Oh, I can see how it works.
<JordanBrown>
And it sure seems like my instinctive reaction that a turnaround couldn't work is wrong.
<JordanBrown>
Two million years ago, during a Christmas party, I sat down at an Osborne 1 and wrote a BASIC program that drew an ASCII Christmas tree, and twinkled the lights.
<JordanBrown>
And then I put a train track around the tree, and animated that. (The train was, of course, the letters T R A I N.)
<JordanBrown>
And then a cat that came in from off-screen and knocked the train off the track.
<JordanBrown>
And a human that came in and put it back.
<JordanBrown>
It was very silly.
<InPhase>
:)
<InPhase>
That sounds like a lot to fit onto the Osborne 1 screen! lol
<InPhase>
It's almost comically small now.
<JakeSays>
InPhase: i was gonna suggest christmas tree ornaments as a theme:)
<JordanBrown>
It wasn't exactly high-resolution imagery.
<JakeSays>
JordanBrown: lol my irc client made your comment look like "we always liked the trains more than the kids"
<JordanBrown>
We don't talk about that.
<JakeSays>
LOL
<JordanBrown>
Speaking of wife, must go feed wife.
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
ToAruShiroiNeko has quit [Ping timeout: 248 seconds]
ToAruShiroiNeko has joined #openscad
ur5us has quit [Ping timeout: 244 seconds]
J1A84313928 has quit [Quit: Client closed]
J1A84313928 has joined #openscad
epony has quit [Read error: Connection reset by peer]
aiyion has quit [Ping timeout: 258 seconds]
aiyion has joined #openscad
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
epony has joined #openscad
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
epony has quit [Ping timeout: 252 seconds]
epony has joined #openscad
lastrodamo has joined #openscad
aiyion has quit [Ping timeout: 258 seconds]
aiyion has joined #openscad
pie_ has quit []
pie_ has joined #openscad
castaway has quit [Remote host closed the connection]
teepee_ has joined #openscad
teepee has quit [Ping timeout: 258 seconds]
teepee_ is now known as teepee
castaway has joined #openscad
sinvet has joined #openscad
monkeybusiness has joined #openscad
monkeybusiness has joined #openscad
little_blossom has quit [Quit: little_blossom]
little_blossom has joined #openscad
epony has quit [Remote host closed the connection]
monkeybusiness has quit [Ping timeout: 268 seconds]
p3ck has quit [Ping timeout: 268 seconds]
aiyion has quit [Remote host closed the connection]
aiyion has joined #openscad
epony has joined #openscad
tachoknight has joined #openscad
teepee has quit [Remote host closed the connection]
teepee has joined #openscad
monkeybusiness has joined #openscad
monkeybusiness has joined #openscad
monkeybusiness has quit [Ping timeout: 248 seconds]
Colere has quit [Ping timeout: 260 seconds]
Colere has joined #openscad
Furor has joined #openscad
Colere has quit [Ping timeout: 268 seconds]
ToAruShiroiNeko has quit [Ping timeout: 268 seconds]
sinvet has quit [Read error: Connection reset by peer]
Furor has quit [Ping timeout: 248 seconds]
ToAruShiroiNeko has joined #openscad
Colere has joined #openscad
Furor has joined #openscad
Colere has quit [Ping timeout: 248 seconds]
Lemniscate has joined #openscad
Furor has quit [Ping timeout: 248 seconds]
Furor has joined #openscad
Lemniscate has quit [Ping timeout: 268 seconds]
aiyion1 has joined #openscad
aiyion has quit [Remote host closed the connection]
aiyion1 has quit [Remote host closed the connection]
califax has quit [Remote host closed the connection]
califax has joined #openscad
Guest28 has joined #openscad
ur5us has joined #openscad
califax has quit [Remote host closed the connection]
califax has joined #openscad
Guest28 has quit [Quit: Client closed]
ur5us has quit [Ping timeout: 248 seconds]
abff has quit [Read error: Connection reset by peer]
abff has joined #openscad
ur5us has joined #openscad
monkeybusiness has joined #openscad
monkeybusiness has joined #openscad
monkeybusiness has quit [Changing host]
califax has quit [Remote host closed the connection]
califax has joined #openscad
lastrodamo has quit [Quit: Leaving]
califax has quit [Remote host closed the connection]
califax has joined #openscad
ur5us has quit [Remote host closed the connection]
ur5us has joined #openscad
<InPhase>
One of the problems with threaded-view in an email client is these loooong OpenSCAD github discussions, where I don't get around to moving them over for a while, someone replies, and suddenly there are 3 pages of emails before I get to any emails other than that thread. :)
<teepee>
yep, at least it's collapsible
teepee_ has joined #openscad
teepee has quit [Ping timeout: 258 seconds]
teepee_ is now known as teepee
<linext_>
is there a book on WebAssembly that explains how OpenSCAD wasm works?
<teepee>
I would assume there's a couple of wasm books by now, it's not that new anymore
<teepee>
but I have not looked for bookks on that topic yet