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',...