<InPhase>
I've so far only needed text metrics before it was written. Irony.
<linext>
i think what i'm going to start doing is browsing thingiverse with the newest things, and rewrite any customizers i see
<linext>
the desk name plate is pretty easy
<InPhase>
Are you trying to build up a pile of useful content?
<linext>
a library
<linext>
a web ide, library of customizers, rendering system peer-to-peer
califax has quit [Ping timeout: 255 seconds]
<InPhase>
linext: I had 184 derivatives of this, with 59 posted publicly as remixes: https://www.thingiverse.com/thing:1689741 People sure liked customizing it, although pretty much all they ever change is the text.
<othx>
InPhase linked to "Ergonomic Hair Comb With Personalized Text by rcolyer" on thingiverse => 4 IRC mentions
<InPhase>
Perhaps the simplicity of what they can change is the source of its popularity.
<InPhase>
The second most popular of mine for customization is the baby version of the same, with 125 derivatives and 46 posted remixes: https://www.thingiverse.com/thing:3025280
<othx>
InPhase linked to "Baby Hair Comb with Personalized Text by rcolyer" on thingiverse => 1 IRC mentions
<InPhase>
There's some message in that about human behavior. :)
<othx>
linext linked to "Customizable Logarithmic Spiral by jesse" on thingiverse => 1 IRC mentions
<InPhase>
People mostly like the ones with really obvious stuff to tweak. My upright battery holder where you just change how many batteries it will fit got a lot of customization too.
<InPhase>
It was 25 minutes when I made it, but computers got a little faster since then...
rawgreaze has joined #openscad
<InPhase>
I could probably make a much faster version these days, but I lost interest in combs I guess.
fling has quit [Quit: ZNC 1.8.2+deb2+b1 - https://znc.in]
<InPhase>
Also there's the option of importing the text-free stl and having the customizer only put on the text. That's all people seem to customize anyway.
fling has joined #openscad
fling has quit [Remote host closed the connection]
fling has joined #openscad
ur5us has quit [Ping timeout: 252 seconds]
LordOfBikes has quit [Ping timeout: 252 seconds]
LordOfBikes has joined #openscad
epony has quit [Ping timeout: 246 seconds]
fling has quit [Remote host closed the connection]
fling has joined #openscad
aiyion1 has quit [Ping timeout: 255 seconds]
aiyion1 has joined #openscad
epony has joined #openscad
Junxter has joined #openscad
epony has quit [Remote host closed the connection]
epony has joined #openscad
<JordanBrown[m]>
linext Perversely, I am in much the same situation as InPhase: I had a project where text metrics would have been useful, which prompted me to do the work… and after that, as it happens, I haven’t needed it since. But I am familiar with it if you have questions.
<InPhase>
lol
snaked has quit [Ping timeout: 252 seconds]
snaked has joined #openscad
gunnbr has quit [Read error: Connection reset by peer]
<J1A8427>
it get really useful when you use different fonts but you also can use resize to make something fit
<JordanBrown[m]>
Yes. (Not everybody knows about it.)
<teepee>
even with some "standard" shapes
<JordanBrown[m]>
yes
<JordanBrown[m]>
rpentomino is cool, but very slow.
<JordanBrown[m]>
As you can see from the comment, I do have a glider gun, but I wanted to keep it in one paste.
<JordanBrown[m]>
I also have a Python program that reads a "standard" file format for Life patterns and writes an OpenSCAD array, which is how I transcribed the glider gun.
<teepee>
cool stuff, now we need to make an openscad compiler :)
<JordanBrown[m]>
More important is to have a way to generate animation frame N+1 with the data from N as the base.
<JordanBrown[m]>
The most expensive part is that for each frame, it has to calculate all previous generations.
<teepee>
yeah, no way to transfer calculated state
<J1A8427>
recursion might speed this up .. you need to calculate for each frame all statii till that or?
<JordanBrown[m]>
It's already recursive.
teepee_ has joined #openscad
teepee has quit [Ping timeout: 255 seconds]
<JordanBrown[m]>
but to calculate the state for generation 5, you have to start with 0, calculate 1, calculate 2, calculate 3, calculate 5, calculate 5, then display 5.
castaway has quit [Ping timeout: 246 seconds]
teepee_ is now known as teepee
<JordanBrown[m]>
There's no way to go directly from 0 to N.
<JordanBrown[m]>
And since each animation frame is totally independent of the next...
<J1A8427>
if a recursive module is used it may cache the states
<JordanBrown[m]>
The problem is not the geometry. The geometry is easy.
<JordanBrown[m]>
Or do you mean that we're smart enough to cache calculation results?
<JordanBrown[m]>
... figuring out when something is a pure function and so if you have the inputs you can calculate the outputs?
<J1A8427>
if the array state n=1 is fed into the recursive call for n=2 it may be possible that this is cached
<J1A8427>
not sure for a function
<teepee>
each animation is a totally separate calculation
<teepee>
only the geometry cache survives
<JordanBrown[m]>
Hypothetically, we could cache the results of execution of pure functions.
<InPhase>
JordanBrown[m]: I've tried to come up with one at least a hundred times in the past, but I don't think I ever got better than the various abs solutions like that one.
<teepee>
lookup(x, [[0, 0], [0.5, 1], [1, 0]])
<InPhase>
lol
<JordanBrown[m]>
teepee, yes, that's a good one.
<JordanBrown[m]>
Did we ever get the vector-capable lookup integrated?
<InPhase>
teepee: And while it is humorous and feels like cheating, that is probably better for most animation purposes because it is more generalizable for other patterns.
<JordanBrown[m]>
yes, absolutely
<teepee>
it might even be faster as it's just 1 user space call
<InPhase>
What a strange language we have here. :)
<teepee>
but then the interpolation still could be slow, no idea
<InPhase>
That'll be native code and should be pretty fast.
<teepee>
no blame on the language
<JordanBrown[m]>
does it do a linear search, or binary?
<InPhase>
Wouldn't matter even in C++ directly until you got somewhere probably over 10 entries.