Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float mandelbulbDistance(Vec3 p)
- {
- Vec3 v = p;
- Vec3 c = v;
- float r = 0.f;
- float d = 1.f;
- for(int n=0; n<=10; ++n)
- {
- r = v.length();
- if(r > 8.f) // Bailout
- {
- break;
- }
- float theta = acosf(v.z/r);
- float phi = atan2f(v.y, v.x);
- float rr = r * r;
- float rrrr = rr * rr;
- d = rrrr * rrrr * r * 10 * d + 1.f;
- float zr = rrrr * rrrr * rr;
- theta *= 10;
- phi *= 10;
- float sinTheta = sinf(theta);
- v = (Vec3(sinTheta*cosf(phi), sinf(phi)*sinTheta, cosf(theta))*zr) + c;
- }
- return (0.5f * r * logf(r)) / d;
- }
Advertisement
Add Comment
Please, Sign In to add comment