﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Fractal OverSampling="Sample3x3" ViewCenter.X="-0.12" ViewCenter.Y="0.5" ViewAngle="-0.3424218" PixelSize="0.00115833333333333" Pixels.X="800" Pixels.Y="600" ClassicMaxDwell="400" ApplyCosSmoothingToMagnitude="True" SmoothOrbitAngle="True">
  <FractalNotes><![CDATA[]]></FractalNotes>
  <FractalEquation Id="017505fb-1577-4bc5-b0ad-79e37954bddc" Title="Convergent Map 14" Type="Convergent" IsJulia="True" JuliaC="0.926666666666667+0.32i" PowerFactor="4">
    <Instructions><![CDATA[
comment:
  
  Use the Julia Preview to explore Julia fractals
  for this equation.
  
  Best if viewed using the 'Gradient Map - Atan 1' or
  'Gradient Map - Atan 2' Classic Controllers.
  
  Notes:
  
     f(z) = (z^K + c)/(z^L - c) + c
    f'(z) = ((z^L - c)*K*z^(K-1) - (z^K + c)*L*z^(L-1))/(z^L - c)^2
   
  To find critical point, set f'(z) = 0, and solve for 0.
  i.e.,
    ((z^L - c)*K*z^(K-1) - (z^K + c)*L*z^(L-1))/(z^L - c)^2 = 0
    ((z^L - c)*K*z^(K-1) - (z^K + c)*L*z^(L-1)) = 0
    (z^L - c)*K*z^(K-1) = (z^K + c)*L*z^(L-1)
    z = 0
    
global:
  
  FSK.OverrideValue("AngleReferencePoint", AngleReferencePoint)
  
iterate:
  
  z = (z^K + c)/(z^L - c) + c
  
properties:
  
  option K {
    type = IntegerEnum(2,8)
    caption = "K"
    details = "Smaller Exponent (K <= L)"
    default = 3
  }
  option L {
    type = IntegerEnum(2,8)
    caption = "L"
    details = "Larger Exponent (L >= K)"
    default = 3
  }
  #include AngleReferencePoints
  
  option AngleReferencePoint {
    type = AngleReferencePoints
    caption = "Angle Reference"
    default = AngleReferencePoints.PreviousOrbitPoint
  }
]]></Instructions>
    <PropertyValueOverrides />
  </FractalEquation>
  <TransformationArray>
    <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
      <Instructions><![CDATA[]]></Instructions>
      <PropertyValueOverrides />
    </Transformation>
  </TransformationArray>
  <TransformationArray>
    <Transformation Id="33fc12b2-4054-493c-8d1c-24bd45446caf" Title="Composite Function">
      <Instructions><![CDATA[
comment:
  
  Implements a transformation based on the composite function:
  
    z = G(F(z))
    
  Both F abd G are applied relative to a conjugating map
  defined as a Mobius transformation. For example, we define
  the conjugation of F with respect to the conjugating map 
  MapF as:
  
    z = Mobius.TransformPoint(MapF, F(Mobius.InverseTransformPoint(MapF, z)))
  
  a similar conjugation is defined for G. Finally, the 
  composite function is applied Power times to z.
  
global:
  '
  ' Initialize conjugating maps MapF and MapG.
  '
  const Mobius MapF = Mobius.Identity()
  const Mobius MapG = Mobius.Identity()
  const Complex ApplyMapF = ShiftF <> 0 || AngleF <> 0 || ScaleF <> 1 || InvertF
  const Complex ApplyMapG = ShiftG <> 0 || AngleG <> 0 || ScaleG <> 1 || InvertG
  
  if (ApplyMapF) {
    Mobius.Translate(MapF, ShiftF)
    Mobius.Rotate(MapF, DegreeToRadian(AngleF))
    Mobius.Scale(MapF, ScaleF)
    
    if (InvertF) {
      Mobius.ApplyInversion(MapF)
    }
  }
  if (ApplyMapG) {
    Mobius.Translate(MapG, ShiftG)
    Mobius.Rotate(MapG, DegreeToRadian(AngleG))
    Mobius.Scale(MapG, ScaleG)
    
    if (InvertG) {
      Mobius.ApplyInversion(MapG)
    }
  }
  
transform:
  
  if (ApplyMapF) {
    z = Mobius.TransformPoint(MapF, F(Mobius.InverseTransformPoint(MapF, z)))
  } else {
    z = F(z)
  }
  if (ApplyMapG) {
    z = Mobius.TransformPoint(MapG, G(Mobius.InverseTransformPoint(MapG, z)))
  } else {
    z = G(z)
  }
  z *= Scale
  
properties:
  
  #include ComplexFunctions
  
  divider {
    caption = "General"
  }
  option Scale {
    type = Float
    caption = "Scale"
    details = "Scale factor applied to composite value"
    default = 1
  }
  divider {
    caption = "F(z)"
  }
  option F {
    type = ComplexFunctions
    caption = "F(z)"
    default = Pow2
  }
  divider {
    caption = "Conjugating map applied to F(z)"
  }
  option ShiftF {
    type = Complex
    caption = "Shift"
    details = "Translation component"
    default = 0
  }
  option ScaleF {
    type = Float
    caption = "Scale"
    details = "Scale factor"
    default = 1
  }
  option AngleF {
    type = Float
    caption = "Angle"
    details = "Angle of rotation"
    default = 0
    range = [-360,360]
  }
  option InvertF {
    type = Boolean
    caption = "Invert"
    details = "Apply complex inversion"
    default = False
  }
  divider {
    caption = "G(z)"
  }
  option G {
    type = ComplexFunctions
    caption = "G(z)"
    default = Ident
  }
  divider {
    caption = "Conjugating map applied to G(z)"
  }
  option ShiftG {
    type = Complex
    caption = "Shift"
    details = "Translation component"
    default = 0
  }
  option ScaleG {
    type = Float
    caption = "Scale"
    details = "Scale factor"
    default = 1
  }
  option AngleG {
    type = Float
    caption = "Angle"
    details = "Angle of rotation"
    default = 0
    range = [-360,360]
  }
  option InvertG {
    type = Boolean
    caption = "Invert"
    details = "Apply complex inversion"
    default = False
  }
]]></Instructions>
      <PropertyValueOverrides>
        <Option Name="F" Type="FunctionProxyOption" Value="Ident" />
      </PropertyValueOverrides>
    </Transformation>
  </TransformationArray>
  <AlternateValueInfo />
  <AlternateValueInfo />
  <Classic>
    <ClassicNormalizer />
    <SampleDataNormalizer Method="InsideAndOutsideSeparately">
      <NormalizerDescriptor />
      <NormalizerDescriptor />
    </SampleDataNormalizer>
    <ClassicMasterController Id="89c55751-a384-448f-b3b8-dce70cfb0c40" Title="Pass Thru">
      <Instructions><![CDATA[
comment:
  
  Return color computed by 1st controller.
  
color:
  
  color = Controller.Color(0)
]]></Instructions>
      <PropertyValueOverrides />
    </ClassicMasterController>
    <ClassicControllerArray>
      <ClassicController Id="ed90d271-f159-487a-9368-e86f1057d56e" Title="Gradient Map - Angle Relief (Smooth Angle)" ApplyDepth="True" DepthPower="0.25" DepthFactor="0.25" Apply3D="True" Map3D="Angle" Offset="0.5" BounceValue="True" ApplyDepth3D="True">
        <GradientArray>
          <Gradient Title="6 Colors - Spectrum (Vibrant)">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear" BaseSaturationAdjustment="100" BaseLightnessAdjustment="10">
                <ReferencePoint Color="DF2020" />
                <ReferencePoint Color="DFDF20" />
                <ReferencePoint Color="1AB21A" />
                <ReferencePoint Color="20DFDF" />
                <ReferencePoint Color="2020DF" />
                <ReferencePoint Color="B21AB2" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="FF1A1A" />
              <GradientPoint X="0.1666667" Color="FFFF1A" />
              <GradientPoint X="0.3333333" Color="00EB00" />
              <GradientPoint X="0.5" Color="1AFFFF" />
              <GradientPoint X="0.6666667" Color="1A1AFF" />
              <GradientPoint X="0.8333334" Color="EB00EB" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="6 Colors - Spectrum (Subdued)">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="DF2020" />
                <ReferencePoint Color="DFDF20" />
                <ReferencePoint Color="1AB21A" />
                <ReferencePoint Color="20DFDF" />
                <ReferencePoint Color="2020DF" />
                <ReferencePoint Color="B21AB2" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="DF2020" />
              <GradientPoint X="0.1666667" Color="DFDF20" />
              <GradientPoint X="0.3333333" Color="1AB21A" />
              <GradientPoint X="0.5" Color="20DFDF" />
              <GradientPoint X="0.6666667" Color="2020DF" />
              <GradientPoint X="0.8333334" Color="B21AB2" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="6 Colors - Spectrum (Pastels)">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear" BaseLightnessAdjustment="60">
                <ReferencePoint Color="DF2020" />
                <ReferencePoint Color="DFDF20" />
                <ReferencePoint Color="1AB21A" />
                <ReferencePoint Color="20DFDF" />
                <ReferencePoint Color="2020DF" />
                <ReferencePoint Color="B21AB2" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="F2A6A6" />
              <GradientPoint X="0.1666667" Color="F2F2A6" />
              <GradientPoint X="0.3333333" Color="94EF94" />
              <GradientPoint X="0.5" Color="A6F2F2" />
              <GradientPoint X="0.6666667" Color="A6A6F2" />
              <GradientPoint X="0.8333334" Color="EF94EF" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Red, Blue, White, Yellow">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="FF0000" />
                <ReferencePoint Color="0000FF" />
                <ReferencePoint Color="FFFFFF" />
                <ReferencePoint Color="FFFF00" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="FF0000" />
              <GradientPoint X="0.25" Color="0000FF" />
              <GradientPoint X="0.5" Color="FFFFFF" />
              <GradientPoint X="0.75" Color="FFFF00" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Fire Brick, Purple, Lavender Blush, Indian Red">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="B22222" />
                <ReferencePoint Color="800080" />
                <ReferencePoint Color="FFF0F5" />
                <ReferencePoint Color="CD5C5C" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="B22222" />
              <GradientPoint X="0.25" Color="800080" />
              <GradientPoint X="0.5" Color="FFF0F5" />
              <GradientPoint X="0.75" Color="CD5C5C" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Maroon, Thistle, Linen, Dark Goldenrod">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="800000" />
                <ReferencePoint Color="D8BFD8" />
                <ReferencePoint Color="FAF0E6" />
                <ReferencePoint Color="B8860B" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="800000" />
              <GradientPoint X="0.25" Color="D8BFD8" />
              <GradientPoint X="0.5" Color="FAF0E6" />
              <GradientPoint X="0.75" Color="B8860B" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Copper, Gold, Silver, Bronze">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="BF8040" />
                <ReferencePoint Color="E6C319" />
                <ReferencePoint Color="F0F0F5" />
                <ReferencePoint Color="B8A37A" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="BF8040" />
              <GradientPoint X="0.25" Color="E6C319" />
              <GradientPoint X="0.5" Color="F0F0F5" />
              <GradientPoint X="0.75" Color="B8A37A" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Green, Beige, Tan, Khaki">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="008000" />
                <ReferencePoint Color="F5F5DC" />
                <ReferencePoint Color="D2B48C" />
                <ReferencePoint Color="F0E68C" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="008000" />
              <GradientPoint X="0.25" Color="F5F5DC" />
              <GradientPoint X="0.5" Color="D2B48C" />
              <GradientPoint X="0.75" Color="F0E68C" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Forest Green, Cadet Blue, Alice Blue, Slate Gray">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="228B22" />
                <ReferencePoint Color="5F9EA0" />
                <ReferencePoint Color="F0F8FF" />
                <ReferencePoint Color="708090" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="228B22" />
              <GradientPoint X="0.25" Color="5F9EA0" />
              <GradientPoint X="0.5" Color="F0F8FF" />
              <GradientPoint X="0.75" Color="708090" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Cornflower Blue, Steel Blue, Alice Blue, Slate Blue">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="6495ED" />
                <ReferencePoint Color="4682B4" />
                <ReferencePoint Color="F0F8FF" />
                <ReferencePoint Color="6A5ACD" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="6495ED" />
              <GradientPoint X="0.25" Color="4682B4" />
              <GradientPoint X="0.5" Color="F0F8FF" />
              <GradientPoint X="0.75" Color="6A5ACD" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
          <Gradient Title="4 Colors - Dark Orchid, Slate Blue, Alice Blue, Medium Violet Red">
            <GradientController Smooth="True" DescriptorEnabled="True">
              <GradientDescriptor Style="Linear">
                <ReferencePoint Color="9932CC" />
                <ReferencePoint Color="6A5ACD" />
                <ReferencePoint Color="F0F8FF" />
                <ReferencePoint Color="C71585" />
              </GradientDescriptor>
              <GradientPoint X="0" Color="9932CC" />
              <GradientPoint X="0.25" Color="6A5ACD" />
              <GradientPoint X="0.5" Color="F0F8FF" />
              <GradientPoint X="0.75" Color="C71585" />
            </GradientController>
            <GradientController Type="Opacity" />
          </Gradient>
        </GradientArray>
        <TextureArray />
        <Instructions><![CDATA[
comment:
  
  This controller maps the Angle to 3D shading and 
  creates what looks like a 3D relief projecting 
  from the fractal surface. 
  
  You must check 'Smooth Angle' on the Mandelbrot 
  properties page to perform the data processing 
  required for this effect. Check 'Cos Smoothing'
  on the same page to strengthen the effect.
  
  This controller looks especially nice with Convergent
  fractals, Newton fractals, or any of the other root 
  finding method fractals. Convergent fractals can appear
  as twisted wrought iron, for example. Newton fractals 
  look like primative sea creatures or plant life. 
  
  For Divergent fractals like the classic Mandelbrot,
  check 'Invert Value' in the '3D mapping' section to
  reverse the 3D effect; peaks become valleys and 
  valleys become peaks.
  
  For Convergent fractals, try setting 'Value' to
  'Angle' as well as the default 'Magnitude'.
  
  For Newton fractals, set 'Value' to 'Root Index',
  to color areas based on the root to which each point
  converges. The Mandelbrot is displayed in a single 
  color but when you explore the Julia fractals,
  they are in full color.
  
  Set 'Value' to 'Alternate 1 Value' for other color 
  variations. Remember to activate 'Alternate Mapping 1' 
  to use 'Alternate 1 Value'.
  
  Other things to try:
  
  - Check 'Invert Value' to reverse the 3D effect;
    peaks become valleys and valleys become peaks. 
    
  - Uncheck 'Apply Depth' to remove the depth based 
    highlighting and enrich colors.
  
  - In the '3D Mapping' section, change 'Offset' to 
    0.125, 0.25, 0.375, 0.5, 0.625, 0.75, or 0.875.
    
  - Change 'Power' to 0.5 or 2.0 for other variations.
    Try each value and then check 'Invert Value' and/or
    change 'Offset', and try them again.
    
  - Change 'Factor' to 0.5 or 2.0 for other variations.
    Try each value and then check 'Invert Value' and/or
    change 'Offset', and try them again.
    
  - On the Mandelbrot properties page set 'Magnitude' to
    one of the other settings. These affect the shape of
    the relief. Try different values for 'Bailout' for
    different effects. A typical value is 1024 but some 
    of the 'Magnitude' settings look best when you set 
    'Bailout' to large values like '1e6'.
    
color:
  
  color = Gradient.Color(ColorScheme, Offset + Factor*Value^Power)
  
properties:
  
  option ColorScheme {
    type = GradientIndex
    caption = "Color Scheme"
    default = 5
    size = Large
  }
  option Value {
    type = SamplePointValue
    caption = "Value"
    default = Sample.Magnitude
  }
  option Power {
    type = Float
    caption = "Power"
    details = "Set value = value ^ Power (0.125 to 8)"
    default = 1
    range = [0.125,8]
  }
  option Factor {
    type = Float
    caption = "Factor"
    details = "Set value = value * Factor (-8 to 8)"
    default = 1
    range = [-8,8]
  }
  option Offset {
    type = Float
    caption = "Offset"
    details = "Set value = value + Offset (-1 to 1)"
    default = 0
    range = [-1,1]
  }
]]></Instructions>
        <PropertyValueOverrides>
          <Option Name="ColorScheme" Type="GradientIndexOption" Value="6" />
          <Option Name="Factor" Type="FloatOption" Value="2" />
        </PropertyValueOverrides>
      </ClassicController>
    </ClassicControllerArray>
  </Classic>
  <TransformationArray>
    <Transformation Id="7fc4bc2c-b961-4431-b074-277d7b29842b" Title="Identity">
      <Instructions><![CDATA[]]></Instructions>
      <PropertyValueOverrides />
    </Transformation>
  </TransformationArray>
  <TriangleMetricSet>
    <Instructions><![CDATA[metric = p1]]></Instructions>
    <TriangleMetric />
    <TriangleMetric />
    <TriangleMetric />
  </TriangleMetricSet>
</Fractal>