Logo by S Nelson - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Check out the originating "3d Mandelbulb" thread here
 
*
Welcome, Guest. Please login or register. April 26, 2024, 03:10:32 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: exact DE formulas and fractal types  (Read 1180 times)
0 Members and 1 Guest are viewing this topic.
TruthSerum
Guest
« on: May 28, 2015, 04:34:06 PM »

Right now I can see two main types of fractals for rendering: those that construct the DE directly by CSG operations, and those that implement a bailout condition and then attempt to approximate the DE function using some kind of vector derivative field.

Right now I am investigating fractals where the DE is described from scratch. The basic procedure here is as follows:

Code:
float DE(vec3 p) {
  float d = 10000.0; /* arbitrary constant that is larger than any possible distance */
  for (iterations) {
    p += f(p);
    d = min(d,object(p));
  }
  return d;
}

This has the effect of instancing many copies of object() (like those defined at iq's distance formula page), where each one is translated along a vector described by f(), a function of the current point position (and possibly other parameters too, such as the normalized iteration count).

One problem with this construction is that I keep finding that the space created by the instances is very closed, meaning that to see the repetitions and to understand the structure of the fractal you have to make additional CSG operations to "carve out" some kind of inner space. An example of applying this technique and then carving out a space using an infinite cylinder can be found here, and who's screenshot follows.



Maybe someone has a better technique for "exploding" the space created by this operation. The idea is to be able to fly around inside a fractal space, but without resorting to simple repetition of the space (by using mod() or fract() on the input point) which has too much symmetry.

Here is another example, where f() is defined to be the paxis function (described here) and object() is the signed-box function. As you can see, you cannot fly inside this one. It is necessary to carve out a space, for example a cylinder, so you can fly through it and see the internal structure.

« Last Edit: May 28, 2015, 10:40:53 PM by TruthSerum » Logged
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #1 on: May 29, 2015, 03:51:43 AM »

can you turn it inside out?
Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
TruthSerum
Guest
« Reply #2 on: May 29, 2015, 02:00:42 PM »

I have tried to do this using the mapping p'=1/(1+p) with little success.

I am still enjoying the technique though. Here is another shader implementation based on the same carving principle:

<a href="https://www.youtube.com/v/NgopeP3a0wk&rel=1&fs=1&hd=1" target="_blank">https://www.youtube.com/v/NgopeP3a0wk&rel=1&fs=1&hd=1</a>

The f() function that I am using is below. The funtion also takes parameter, s, based on the iteration count.

Code:
vec3 func(vec3 p, float s) {
    vec3 off = paxis(p) * s * 1.5;
    p -= off;
    p -= sign(p) * s * 2.75;
    return p;
}
« Last Edit: June 07, 2015, 08:57:12 PM by TruthSerum » Logged
eiffie
Guest
« Reply #3 on: May 29, 2015, 04:56:07 PM »

We are definitely thinking along the same lines...
https://www.shadertoy.com/view/XlSGDc
... I also had to cut one distance from another.

But in reality the difference between the two types of fractals comes down to the order of math operations. Any fractal done this way can be written as an escape time fractal. Although the reverse does seem challenging for say the mandelbrot set.
Logged
TruthSerum
Guest
« Reply #4 on: May 30, 2015, 12:07:54 AM »

I enjoyed your shader too, I also observed many of those shapes while experimenting with the paxis routine. I don't know about you, but I think I prefer the sharp edges of the box as opposed to the cheaper sphere for instancing. Definitely produced more pleasing results in the MachineRoom shader.

I found that if you cut the scene with a plane, you get some very nice shapes at the intersection, which reminded me heavily of Kali's circuit board, one of my personal all time favorites smiley
Logged
TruthSerum
Guest
« Reply #5 on: June 13, 2015, 01:28:37 AM »

I made a new shader using this technique:

<a href="https://www.youtube.com/v/wH2Pm_Jum1U&rel=1&fs=1&hd=1" target="_blank">https://www.youtube.com/v/wH2Pm_Jum1U&rel=1&fs=1&hd=1</a>
Logged
Pages: [1]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
Amazing fractal hybrid types 3D Fractal Generation M Benesi 5 8356 Last post February 24, 2010, 06:03:11 AM
by M Benesi
How do you install exact linux packages Others Thunderwave 10 2931 Last post October 31, 2010, 04:00:21 AM
by Thunderwave
Mixing Fractal IFS types shader Programming tryptophan 8 8873 Last post April 15, 2013, 09:38:50 PM
by tryptophan
An exact flat Mandelbrot fractal resides inside the 3D Mandelbulb 3D Fractal Generation MrMoe 2 25054 Last post December 12, 2017, 03:39:58 PM
by Alef
Exact Normal Vectors On 3D Surfaces Help & Support HazardHarry 2 387 Last post March 20, 2017, 06:12:50 PM
by HazardHarry

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.285 seconds with 24 queries. (Pretty URLs adds 0.016s, 2q)