<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ndbx formatVersion="20" type="file" uuid="653dc4ff-b225-439c-8ca6-c91c8befce19">
    <property name="canvasHeight" value="1000"/>
    <property name="canvasWidth" value="1000"/>
    <property name="canvasX" value="0"/>
    <property name="canvasY" value="0"/>
    <node name="root" prototype="core.network" renderedChild="rotate1">
        <node comment="margin between dots" name="add1" position="19.00,-20.00" prototype="math.add">
            <port name="value2" type="float" value="8.0"/>
        </node>
        <node name="add3" position="21.00,-8.00" prototype="math.add">
            <port name="value2" type="float" value="1.0"/>
        </node>
        <node comment="rings+1 = floor((sqrt(4*(dots-2)/3+1)-1)/2)+2" name="add4" position="21.00,-4.00" prototype="math.add">
            <port name="value2" type="float" value="2.0"/>
        </node>
        <node name="color_cycle" position="13.00,-24.00" prototype="core.network" renderedChild="rgb_color1">
            <node name="add1" position="-1.00,-30.00" prototype="math.add">
                <port name="value2" type="float" value="180.0"/>
            </node>
            <node name="null1" position="2.00,-33.00" prototype="corevector.null"/>
            <node name="range1" position="-4.00,-28.00" prototype="math.range">
                <port name="step" type="float" value="5.0"/>
            </node>
            <node name="rgb_color1" position="0.00,-15.00" prototype="color.rgb_color"/>
            <node name="wave4" position="-2.00,-20.00" prototype="math.wave">
                <port name="max" type="float" value="255.0"/>
                <port name="period" type="float" value="676.0"/>
                <port name="offset" type="float" value="-51.0"/>
            </node>
            <node name="wave5" position="1.00,-20.00" prototype="math.wave">
                <port name="max" type="float" value="255.0"/>
                <port name="period" type="float" value="783.0"/>
                <port name="offset" type="float" value="-51.0"/>
            </node>
            <node name="wave6" position="4.00,-20.00" prototype="math.wave">
                <port name="max" type="float" value="255.0"/>
                <port name="period" type="float" value="533.0"/>
                <port name="offset" type="float" value="-51.0"/>
            </node>
            <port childReference="null1.shape" description="The input shape." label="" name="shape_1" range="list" type="geometry" widget="none"/>
            <conn input="rgb_color1.red" output="wave4"/>
            <conn input="rgb_color1.green" output="wave5"/>
            <conn input="rgb_color1.blue" output="wave6"/>
            <conn input="add1.value1" output="null1"/>
            <conn input="range1.start" output="null1"/>
            <conn input="range1.end" output="add1"/>
            <conn input="wave4.offset" output="range1"/>
            <conn input="wave5.offset" output="range1"/>
            <conn input="wave6.offset" output="range1"/>
        </node>
        <node name="colorize1" position="11.00,15.00" prototype="corevector.colorize"/>
        <node name="colorize2" position="15.00,15.00" prototype="corevector.colorize"/>
        <node name="combine1" position="14.00,19.00" prototype="list.combine"/>
        <node name="divide1" position="21.00,-9.00" prototype="math.divide">
            <port name="value2" type="float" value="3.0"/>
        </node>
        <node name="divide2" position="21.00,-5.00" prototype="math.divide">
            <port name="value2" type="float" value="2.0"/>
        </node>
        <node name="ellipse1" position="13.00,10.00" prototype="corevector.ellipse">
            <port name="width" type="float" value="48.0"/>
            <port name="height" type="float" value="48.0"/>
        </node>
        <node name="ellipse2" position="17.00,12.00" prototype="corevector.ellipse">
            <port name="width" type="float" value="24.0"/>
            <port name="height" type="float" value="24.0"/>
        </node>
        <node name="frame1" position="18.00,-32.00" prototype="core.frame"/>
        <node name="group1" position="14.00,20.00" prototype="corevector.group"/>
        <node comment="dot size" name="integer1" position="16.00,-22.00" prototype="math.integer">
            <port name="value" type="int" value="64"/>
        </node>
        <node comment="number of dots" name="integer3" position="23.00,-22.00" prototype="math.integer">
            <port name="value" type="int" value="44"/>
        </node>
        <node comment="output set as list" name="lookup1" outputRange="list" position="24.00,7.00" prototype="data.lookup">
            <port name="key" type="string" value="points"/>
        </node>
        <node name="multiply1" position="20.00,1.00" prototype="math.multiply"/>
        <node name="multiply2" position="23.00,1.00" prototype="math.multiply">
            <port name="value2" type="float" value="6.0"/>
        </node>
        <node name="multiply3" position="21.00,-10.00" prototype="math.multiply">
            <port name="value2" type="float" value="4.0"/>
        </node>
        <node name="polygon1" outputRange="list" position="20.00,3.00" prototype="corevector.polygon">
            <port name="radius" type="float" value="7.0"/>
            <port name="sides" type="int" value="6"/>
        </node>
        <node name="range1" position="21.00,-2.00" prototype="math.range">
            <port name="start" type="float" value="1.0"/>
            <port name="end" type="float" value="4.0"/>
        </node>
        <node name="resample1" position="22.00,5.00" prototype="corevector.resample">
            <port name="method" type="string" value="amount"/>
            <port name="points" type="int" value="6"/>
        </node>
        <node name="rotate1" position="9.00,22.00" prototype="corevector.rotate">
            <port name="angle" type="float" value="-20.0"/>
        </node>
        <node name="slice1" position="26.00,9.00" prototype="list.slice"/>
        <node name="sqrt1" position="21.00,-7.00" prototype="math.sqrt"/>
        <node name="subtract1" position="21.00,-11.00" prototype="math.subtract">
            <port name="value2" type="float" value="2.0"/>
        </node>
        <node name="subtract2" position="21.00,-6.00" prototype="math.subtract">
            <port name="value2" type="float" value="1.0"/>
        </node>
        <node name="subtract3" position="27.00,1.00" prototype="math.subtract">
            <port name="value2" type="float" value="1.0"/>
        </node>
        <node name="wave1" position="16.00,-24.00" prototype="math.wave">
            <port name="min" type="float" value="16.0"/>
            <port name="max" type="float" value="64.0"/>
            <port name="period" type="float" value="1024.0"/>
            <port name="offset" type="float" value="-51.0"/>
        </node>
        <node name="wave2" position="19.00,-24.00" prototype="math.wave">
            <port name="min" type="float" value="2.0"/>
            <port name="max" type="float" value="24.0"/>
            <port name="period" type="float" value="120.0"/>
            <port name="offset" type="float" value="-51.0"/>
        </node>
        <node name="wave3" position="22.00,-24.00" prototype="math.wave">
            <port name="max" type="float" value="91.0"/>
            <port name="period" type="float" value="660.0"/>
            <port name="offset" type="float" value="-51.0"/>
        </node>
        <node name="wave4" position="10.00,-24.00" prototype="math.wave">
            <port name="max" type="float" value="87.0"/>
            <port name="period" type="float" value="831.0"/>
            <port name="offset" type="float" value="-51.0"/>
        </node>
        <conn input="ellipse1.width" output="integer1"/>
        <conn input="ellipse1.height" output="integer1"/>
        <conn input="ellipse2.width" output="integer1"/>
        <conn input="ellipse2.height" output="integer1"/>
        <conn input="add1.value1" output="integer1"/>
        <conn input="multiply1.value1" output="add1"/>
        <conn input="multiply1.value2" output="range1"/>
        <conn input="polygon1.radius" output="multiply1"/>
        <conn input="multiply2.value1" output="range1"/>
        <conn input="resample1.points" output="multiply2"/>
        <conn input="lookup1.list" output="resample1"/>
        <conn input="resample1.shape" output="polygon1"/>
        <conn input="multiply3.value1" output="subtract1"/>
        <conn input="divide1.value1" output="multiply3"/>
        <conn input="add3.value1" output="divide1"/>
        <conn input="sqrt1.value" output="add3"/>
        <conn input="subtract2.value1" output="sqrt1"/>
        <conn input="divide2.value1" output="subtract2"/>
        <conn input="slice1.list" output="lookup1"/>
        <conn input="ellipse2.position" output="slice1"/>
        <conn input="subtract1.value1" output="integer3"/>
        <conn input="subtract3.value1" output="integer3"/>
        <conn input="slice1.size" output="subtract3"/>
        <conn input="add4.value1" output="divide2"/>
        <conn input="range1.end" output="add4"/>
        <conn input="wave1.offset" output="frame1"/>
        <conn input="integer1.value" output="wave1"/>
        <conn input="wave2.offset" output="frame1"/>
        <conn input="add1.value2" output="wave2"/>
        <conn input="wave3.offset" output="frame1"/>
        <conn input="integer3.value" output="wave3"/>
        <conn input="colorize1.shape" output="ellipse1"/>
        <conn input="combine1.list1" output="colorize1"/>
        <conn input="colorize2.shape" output="ellipse2"/>
        <conn input="combine1.list2" output="colorize2"/>
        <conn input="color_cycle.shape_1" output="frame1"/>
        <conn input="colorize1.fill" output="color_cycle"/>
        <conn input="colorize2.fill" output="color_cycle"/>
        <conn input="group1.shapes" output="combine1"/>
        <conn input="rotate1.shape" output="group1"/>
        <conn input="wave4.offset" output="frame1"/>
        <conn input="rotate1.angle" output="wave4"/>
    </node>
</ndbx>
