This solution is 100% accurate only for a straight line. Dealing with bezier lengths is very tricky and requires recursion, so really for a 100% accurate result on a curve I would expect only a Python solution to work...
Let's say each next icosphere is twice bigger. Let's manually calculate icos. positions.
If you have a single icosphere, you want to position it in the middle of the curve, 50% of it's length, or 1/2.
If you have two icos., you want the first to take 1/3, and the other to take 2/3 of the curve. So you want to position them at ${1\over3} \times {1\over2} = {1\over6}$ and ${1\over3} + {2\over3} \times {1\over2} = {2\over3}$. Multiplying by half, because the center is in half of the taken space.
3 icospheres positions:
- ${1\over7} \times {1\over2} = {1\over14}$
- ${1\over7} + {2\over7} \times {1\over2} = {2\over7}$
- ${1\over7} + {2\over7} + {4\over7} \times {1\over2} = {3\over7} + {2\over7} = {5\over7}$
4 icospheres positions:
- ${1\over15} \times {1\over2} = {1\over30}$
- ${1\over15} + {2\over15} \times {1\over2} = {2\over15}$
- ${1\over15} + {2\over15} + {4\over15} \times {1\over2} = {3\over15} + {2\over15} = {5\over15}$
- ${1\over15} + {2\over15} + {4\over15} + {8\over15} \times {1\over2} = {7\over15} + {4\over15} = {11\over15}$
You probably see a pattern by now:
- Space taken by each instance is a fraction with the numerator being the index raised to the power of 2...
- $0^2 = 1$
- $1^2 = 2$
- $2^2 = 4$
- $3^2 = 8$
- ...And the denominator being the total number of icos. raised to the power of 2, minus 1.
- Icos.: $1/1$
- Icos.: $1/3$, $2/3$
- Icos.: $1/7$, $2/7$, $4/7$
- Icos.: $1/15$, $2/15$, $4/15$, $8/15$
- Finally, the offset caused by previous instances follows the same pattern: 0, 1, 3, 7...
All those things can be calculated for each instance independently, without some iteration or recursion that geometry nodes don't yet support. The formula becomes:
$f = {2^{i-1}\over d} + {{2^i\over2}\over d} = {2^{i-1} + {2^i\div2}\over d}$
$d = 2^n -1$
where $f$ is a factor (% of the curve to sample a position at), $n$ is the number of icospheres and $i$ is the index of the icosphere.
Instances
instead of theScale
node, things seem to work better, like you say: i.sstatic.net/LfuMG.png. I wonder if that's what "Realized data" means in the info header, "Realized data in input geometry is ignored" $\endgroup$