Considering that only one of those circles' radius is variable, and the other two circles intersect with the yellow loop, you can determine the equation of the yellow loop, which will give you the position of the white point, at any time, in constant time.
your reply certainly gives me hope that its possible, though i fear i've stared at this diagram for too long and am having difficulty viewing it with a fresh perspective.
some additional context.
im constructing the loop (yellow) with the black dots, which im computing in constant time. the dynamic circle (blue) is being constructed from the two static circles (pink, orange). the white dot is currently being computed by sweeping the already computed loop points from the center of the small circle (pink).
are there any laws or key points that may help me along? are there any similar problems that are well documented that you are aware of?
Did you make the animation or you found it somewhere in the internet?
Do you have a formula for each of these things?
What do you mean by "constant time"? From your description it seams all the points have a closed formula, there are no iterative steps that may be long? Do you want a simpler direct formula?
the animation is something i constructed in order to help facilitate discussion and get help :)
i've outlined the computations more detail in a reply below
by constant time i mean O(1)
computing the white dot currently requires me to sweep the already computed loop points which isn't a big deal in a lot of use cases, but with audio its a show stopper
the white dot is also the key to a much more complex computation that im using
3. compute the range of the intersection circle's radius (blue)
4. compute the loop points (yellow)
4A. compute intersection circle along range defined in 3
4B. compute the intersection angle between base and intersection circles relative to the center of the intersection/sub circle (law of cosines)
4C. compute the intersection point with intersection angle (green on blue & orange)
4D. compute sub point with intersection angle (green on pink)
4E. compute the loop point with the x component from intersection point (4C) and the y component from sub point (4D)
5. compute the trace point at trace angle (white)
5A. trace the already computed loop points searching for the the two points where the trace angle fits between
5B. compute the intersection between the line composed of the two matching loop points and the trace line originating at the sub circle's center with an angle of the trace angle
its a generalization of the drawing by Fritz Hügelschäffer linked below
It sounds like you want a point with argument theta such that a bunch of constraints are satisfied. I don't think you'll easily be able to find a general polar "r(theta)=...", since your curve is defined by a "sweep" of other non-trivial function outputs (i.e. the intersection of two circles), which is another way of saying "solve for x in f(x)=0 where f(x) is complicated".
I would be inclined to use a non-linear solver, which will will almost certainly converage within 2 or 3 iterations especially if you're starting with a good initial estimate from time=t-1. 40khz should not be a problem.
You can start with scipy.optimize, and look into ceres if you need something faster.
i don't have much formal math training, but have used scipy a handful to times successfully for other problems. optimize is new to me, but ill throw some things into and see what comes out
I was going to write that it's almost impossible that there is a closed O(1) formula for this, but after reading that the egg of Fritz Hügelschäffer is a cubic, I think there is hope. If your yellow curve is also a cubic, then it's solvable, but the formula for the exact solution is horrible. https://en.wikipedia.org/wiki/Cubic_equation#Cardano's_formu...
I prefer the lazy approach :) . The only hard step is 5B. How are you computing the intersection? Are you using a linear search in the angle? Can you use binary search? Probably the secant method is faster https://en.wikipedia.org/wiki/Secant_method but binary search is more foolproof.