-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
More Hutchinson layers / restricted chaos games #65
Comments
I think I'm overthinking this. It should be possible for the user to implement everything they want for the "game" part of the chaos game. So, Fable handles the iteration, but the user can write custom compute kernels by abusing the fum syntax? |
Otherwise, the core problem here is that we use the I am not sure how this would play with the
We could either change this to do some form of DFS over the fx tuple provided (maybe some sort of stack-like implementation while unrolling the while loop?), or we allow the |
As a note, the Hutchinson redesign (#64) currently allows for users to specify hutchinson operators (and technically shaders) like so:
Which means: execute
f_1
, then choose betweenf_2 -> f_5
, then executef_6
, but we could imagine:Which would mean: execute
f_1
, then choose between(f_2, f_3)
,f_4
, orf_5
, then executef_6
. This Cannot be done right now because I don't have a way to reason about a choice betweenf_2
andf_3
as one of the choices in another IFS. A simple strategy would be to set FractalOperators as a super type and create a null struct:Then we would store
[f_1, f_null, f_4, f_5, f_2, f_3, f_null, f_6]
with fnums of[1,3,2,1]
and potentially another set of indices likefstarts = [1, 2, 5, 7]
so if we have 2 or more recursive IFS definitions, we can keep track of where we are on the list. We could probably get rid of the list of lists entirely in this case and just do everything in the kernel instead...We also need to think about how users will write down both the probability of the null operator and the other functions in a reasonable way, maybe...
With
fo(fos::Tuple{FractalOperator}; prob = 0) = NullOperator(prob, fos)
Or something.
The text was updated successfully, but these errors were encountered: