Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  
  <link rel="stylesheet" href="css/style.css" type="text/css" />
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" type="text/css" />
  <link rel='stylesheet prefetch' href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css'>
  <style type="text/css">
            
        circle,
        text {
            fill: yellow;
            cursor: pointer;
            font-family: monospace;
        }
        
        #dynamic {
            fill: none;
            stroke: red;
        }
        
        path {
            stroke: red;
        }
        
        .deg45 {
            stroke: red;
            stroke-width: 2px;
        }
    </style>
  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
</head>
 <body>
  
  <div class="container">
        <div class="row">
            <div class="col-md-10 col-lg-10 col-sm-10">
                <div class="img">
                    <img src="http://migre.me/wCuuU" class="imgP"></img>
                    <svg class="ang" width="100%" height="500">
                    <path d="M 1000 300 L 800 300" class="deg45" transform="rotate(0 300 300)">
                </path>
                    <text text-anchor="left" x="850" y="300" style="font-size: 15pt;"  transform="rotate(0 300 300)">0 degrees</text>
                    
                <circle cx="900" cy="300" id="center" r="2" />
                <circle cx="900" cy="300" id="dynamic" r="2" fill="none" />
                    <path id="deg" d="M 300 300 L 400 300" stroke="#000" stroke-width="1px" />
                    <text text-anchor="left" x="0" y="100" id="txt" style="font-size: 20pt;" transform="rotate(45 100 100)"></text>
                </svg>
                </div>
            </div>
            
        </div>
    </div>
    <div class="row">
        <div class='box'></div>
    </div>
    </div>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
    <script src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js'></script>
    <script type="text/javascript" src="js/custom.js"></script>
  
</body>
</html>
 
body {
  
  margin: 0;
  padding: 0;
}
/*IMG CONFIG - GRID+PACIENTE*/
img {
  width: 65%;
}
.imgP {
  position: absolute;
  top: 10px;
  left: 0px;
  z-index: 0;
}
/*DROG-IN-DROP*/
.opac {
  opacity: .8;
}
.move-cursor {
  cursor: move;
}
.grab-cursor {
  cursor: grab;
  cursor: -webkit-grab;
}
 
var center = document.querySelector("#center"),
    dynamic = document.querySelector("#dynamic"),
    path = document.querySelector("#deg"),
    svg = document.querySelector("svg"),
    txt = document.querySelector("#txt"),
    svgNS = svg.namespaceURI,
    degree = String.fromCharCode(176),
    arrows = String.fromCharCode(845);
function Point(x, y) {
    return {
        "X": x,
        "Y": y
    };
}
// Credits goes to Stackoverflow: http://stackoverflow.com/a/14413632
function getAngleFromPoint(point, centerPoint) {
    var dy = (point.Y - centerPoint.Y),
        dx = (point.X - centerPoint.X);
    var theta = Math.atan2(dy, dx);
    var angle = (((theta * 180) / Math.PI)) % 360;
    angle = (angle < 0) ? 360 + angle : angle;
    return angle;
}
// Credits goes to http://snipplr.com/view/47207/
function getDistance(point1, point2) {
    var xs = 0;
    var ys = 0;
    xs = point2.X - point1.X;
    xs = xs * xs;
    ys = point2.Y - point1.Y;
    ys = ys * ys;
    return Math.sqrt(xs + ys);
}
function fitSVG() {
    var width = window.innerWidth,
        height = window.innerHeight;
    svg.setAttribute("width", width);
    svg.setAttribute("height", height);
}
svg.onmousemove = function (e) {
    var centerPoint = new Point(center.getAttribute("cx"), center.getAttribute("cy"));
    var point = new Point(e.clientX, e.clientY);
    var angle = Math.round(100 * getAngleFromPoint(point, centerPoint)) / 100;
    var distance = Math.round(getDistance(point, centerPoint));
    var d = "M " + centerPoint.X + " " + centerPoint.Y + " L " + point.X + " " + point.Y;
    path.setAttribute("d", d);
    txt.setAttribute("x", point.X);
    txt.setAttribute("y", point.Y);
    txt.textContent = distance + arrows + " (" + angle + degree + ")";
    txt.setAttribute("transform", "rotate(" + angle + " " + point.X + " " + point.Y + ")");
    dynamic.setAttribute("r", distance);
    fitSVG();
}
//
grid_size = 10;
$(" .ang")
    .draggable({
        grid: [grid_size, grid_size]
    })
.on("mouseover", function () {
    $(this).addClass("move-cursor")
})
.on("mousedown", function () {
    $(this)
        .removeClass("move-cursor")
        .addClass("grab-cursor")
        .addClass("opac");
    $(" .text ").hide();
})
.on("mouseup", function () {
    $(this)
        .removeClass("grab-cursor")
        .removeClass("opac")
        .addClass("move-cursor");
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
rebekpro
0viewers