React SVG Path Study

Messing with control points

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
<script src="https://fb.me/react-with-addons-0.14.0.js"></script>
<script src="https://fb.me/react-dom-0.14.0.js"></script>
<link rel="stylesheet" href="https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/css/bootstrap.css">
<script src="https://facebook.github.io/react/js/jsfiddle-integration-babel.js"></script>
<div id="container"></div>

CSS

body{
  background-color:#f0eeff;
  text-align:center;
}
svg {
  box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.3);
  background-color:white;
}

.arc-twister{
   margin:12px; 
}
.pointer{
 cursor:pointer; 
}

JavaScript 1.7

var Icon = function(props) {
  return ( <svg 
  	style = {{ width: '600px', height: '600px', verticalAlign: 'bottom'}} viewBox = "0 0 600 600" >
    <path stroke = {  props.color || "green" } fill = "none" d = { props.d }/>
    {props.c}
    </svg>
  );
};

var Slider = function(props) {
	return(
  		<div>
  		<label htmlFor="len">{props.label}:</label>
      <br/>
    	<input  id="len"
              className="pointer"
      				style={{width:props.width}} 
              type="range" 
              min={props.min} 
              max={props.max} 
              step={props.step}
              value={props.value}
              onChange={props.change}
              />
      </div>
      )
}

function addCoords(a,b){
  return {x:(parseFloat(a.x) + parseFloat(b.x)).toString(),
  				y:(parseFloat(a.y) + parseFloat(b.y)).toString()
  } 
}

// not used yet, but good for standardizing mapped array to absolute coordinates
function convertRelativeToAbsolute(dArr){
  return dArr.map(function(dNode, count){
      if (dNode.action !== 'c'){return dNode}
    dNode.action = "C";
    var lastCoordArray = dArr[count-1].coords;
    var lastCoord = lastCoordArray[lastCoordArray.length-1];
    dNode.coords = dNode.coords.map(function(coord){
      return addCoords(coord, lastCoord);
    })
       return dNode;
  })
}


function rotate_point(pointX, pointY, originX, originY, angle) {
  angle = angle * Math.PI / 180.0;
  return {
    x: Math.cos(angle) * (pointX - originX) - Math.sin(angle) * (pointY - originY) + originX,
    y: Math.sin(angle) * (pointX - originX) + Math.cos(angle) * (pointY - originY) + originY
  };
}

function isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function joinCoords(arr) {
  return arr.x + ' ' + arr.y;
}

var Image = function(props) {
  var ofx = 200;
  var ofy = 200;
  var boxW = 200;
  var boxH = 200;
  var anchorLen = props.arcValue;
  var rot = props.rotValue; 
  console.log('arcValue', props.arcValue);
  console.log('rotValue',...