JSFiddle - React, Tailwind, and code Playground

by jrab227

JavaScript

//SFC(number_of_segments: Int): (Float,Int) => (Float,Float)
//Takes information about the type of SFC you're making then
//  returns a function to calculate [0,1] points to [0,1] x-y points
function SFC(number_of_segments,debug){
    
    //iter_SFC(value:Float, order:Int): (Float,Float)
    var iter_SFC = function(value, order, previous_segments){
        
        //0 start!
        current_segment = Math.floor(value*number_of_segments)
        
        if(debug){
            console.log("New current segment:" + current_segment)
        }
        
        if (order == 1) {
            return current_segment + previous_segments   
        } else {
            
            var new_value = ((number_of_segments)*value ) - current_segment
            
            
            var new_previous_segments = (current_segment + previous_segments ) * number_of_segments 
            
            if(debug){
                console.log("New Value:" + new_value)
                console.log("New Previous Segments:" + new_previous_segments)
            }
            
            return iter_SFC(new_value, order-1, new_previous_segments ) 
        }
        
        
    }
    
    return iter_SFC
}

var Gosper = SFC(6);

var test = Gosper(.345,4, 0)
console.log(test)