File:IFS (2D) 10082019.png

Original file(8,000 × 8,000 pixels, file size: 42.77 MB, MIME type: image/png)

Captions

Captions

Created with mandelbulber2.

Summary

edit
Description
Deutsch: Ein zweidimensionales Iteriertes Funktionensystem. Formel: void IfsXYIteration(CVector4 &z, const sFractal *fractal, sExtendedAux &aux)

{

 //CVector4 oldZ = z;
 //double fillet = fractal->transformCommon.offset0;
 CVector4 boxSize = fractal->transformCommon.additionConstant0555;
 double xOffset = fractal->transformCommon.offset0;
 double yOffset = fractal->transformCommon.offset05;
 if(fractal->transformCommon.functionEnabledBxFalse
     && aux.i >= fractal->transformCommon.startIterationsB
     && aux.i < fractal->transformCommon.stopIterationsB)
       z  -=  boxSize;
 if (fractal->transformCommon.functionEnabledAxFalse
     && aux.i >= fractal->transformCommon.startIterationsX
     && aux.i < fractal->transformCommon.stopIterationsX)
       z.x = fabs(z.x);
 if (fractal->transformCommon.functionEnabledAyFalse
     && aux.i >= fractal->transformCommon.startIterationsY
     && aux.i < fractal->transformCommon.stopIterationsY)
       z.y = fabs(z.y);
 if (fractal->transformCommon.functionEnabledAzFalse
     && aux.i >= fractal->transformCommon.startIterationsZ
     && aux.i < fractal->transformCommon.stopIterationsZ)
       z.z = fabs(z.z);
 if (fractal->transformCommon.functionEnabledCxFalse
     && aux.i >= fractal->transformCommon.startIterationsJ
     && aux.i < fractal->transformCommon.stopIterationsJ)
 {
   z.x = fabs(z.x);
   int poly = fractal->transformCommon.int3;
   double psi = fabs(fmod(atan(z.y / z.x) + M_PI / poly, M_PI / (0.5 * poly)) - M_PI / poly);
   double len = sqrt(z.x * z.x + z.y * z.y);
   z.x = cos(psi) * len;
   z.y = sin(psi) * len;
 }
 if (fractal->transformCommon.functionEnabledBy
     && aux.i >= fractal->transformCommon.startIterationsD
     && aux.i < fractal->transformCommon.stopIterationsD)
       if (z.y > z.x) swap(z.x, z.y);
 if (fractal->transformCommon.functionEnabledBx
     && aux.i >= fractal->transformCommon.startIterationsI
     && aux.i < fractal->transformCommon.stopIterationsI)
       z  =  z - boxSize;
 if (fractal->transformCommon.functionEnabledxFalse
     && aux.i >= fractal->transformCommon.startIterationsA
     && aux.i < fractal->transformCommon.stopIterationsA)
       if (z.x < xOffset) z.x = fabs(z.x - xOffset) + xOffset;
 if (fractal->transformCommon.functionEnabledy
     && aux.i >= fractal->transformCommon.startIterationsC
     && aux.i < fractal->transformCommon.stopIterationsC)
       if (z.y < yOffset) z.y = fabs(z.y - yOffset) + yOffset;
 if (aux.i >= fractal->transformCommon.startIterationsE
     && aux.i < fractal->transformCommon.stopIterationsE)
       z.x -= fractal->transformCommon.offset1;
 if (aux.i >= fractal->transformCommon.startIterationsF
     && aux.i < fractal->transformCommon.stopIterationsF)
       z.y -= fractal->transformCommon.offsetA1;
 if (fractal->transformCommon.functionEnabledByFalse
     && aux.i >= fractal->transformCommon.startIterationsG
     && aux.i < fractal->transformCommon.stopIterationsG)
       if (z.y > z.x) swap(z.x, z.y);


 // scale
 double useScale = 1.0;
 if (aux.i >= fractal->transformCommon.startIterationsS
     && aux.i < fractal->transformCommon.stopIterationsS)
 {
   useScale = aux.actualScaleA + fractal->transformCommon.scale2;
   z *= useScale;
   if (!fractal->analyticDE.enabledFalse)
     aux.DE = aux.DE * fabs(useScale) + 1.0;
   else
     aux.DE = aux.DE * fabs(useScale) * fractal->analyticDE.scale1 + fractal->analyticDE.offset1;
   if (fractal->transformCommon.functionEnabledFFalse
       && aux.i >= fractal->transformCommon.startIterationsK
       && aux.i < fractal->transformCommon.stopIterationsK)
   {
     // update actualScaleA for next iteration
     double vary = fractal->transformCommon.scaleVary0
                   * (fabs(aux.actualScaleA) - fractal->transformCommon.scaleC1);
     if (fractal->transformCommon.functionEnabledMFalse)
       aux.actualScaleA = -vary;
     else
       aux.actualScaleA = aux.actualScaleA - vary;
   }
 }
 if (aux.i >= fractal->transformCommon.startIterationsH
     && aux.i < fractal->transformCommon.stopIterationsH)
       z += fractal->transformCommon.offset111;
 // rotation
 if (aux.i >= fractal->transformCommon.startIterationsR
     && aux.i < fractal->transformCommon.stopIterationsR)
 {
   z = fractal->transformCommon.rotationMatrix.RotateVector(z);
 }
 if (fractal->analyticDE.enabledFalse)
   aux.DE = aux.DE * fractal->analyticDE.scale1 + fractal->analyticDE.offset0;
}
English: A twodimensional iterated function system.
Date
Source Own work
Author PantheraLeo1359531

CGI.

Licensing

edit
I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Annotations
InfoField
This image is annotated: View the annotations at Commons

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current16:53, 10 August 2019Thumbnail for version as of 16:53, 10 August 20198,000 × 8,000 (42.77 MB)PantheraLeo1359531 (talk | contribs)Downsized to 8K.
16:51, 10 August 2019Thumbnail for version as of 16:51, 10 August 201920,000 × 20,000 (208.52 MB)PantheraLeo1359531 (talk | contribs)User created page with UploadWizard