Created
January 23, 2019 07:37
-
-
Save mulderu/50881eadd53e28bacfcb00ff79c4c220 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/nificif
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width"> | |
<title>JS Bin</title> | |
<link href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" /> | |
<script src="https://code.jquery.com/jquery-3.1.0.js"></script> | |
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/victor/1.1.0/victor.js"></script> | |
<script src="https://data.jsdelivr.com/v1/package/npm/vectorjs/badge?style=rounded"></script> | |
</head> | |
<body> | |
<div id="canvas_container"> | |
</div> | |
<script id="jsbin-javascript"> | |
var angle_vectors = function (A, B, C, D){ | |
var vector_1 = { | |
x: B[0] - A[0], | |
y: B[1] - A[1] | |
}; | |
var vector_2 = { | |
x: D[0] - C[0], | |
y: D[1] - C[1] | |
}; | |
var rad_angle = Math.atan2(vector_2.y, vector_2.x) - Math.atan2(vector_1.y, vector_1.x); | |
return rad_angle * 180 / Math.PI; | |
} | |
$(document).ready(function() { | |
var paper = new Raphael(document.getElementById('canvas_container'), 2000, 2000); | |
let data = [ 'A - B Plane Angle', | |
'Angle A-B, C-D', | |
[ 1858, 1491 ], | |
[ 1946, 1030 ], | |
[ 1877, 1624 ], | |
[ 2034, 346 ], | |
3.8035487094310243 ]; | |
data = [ 'Facial angle (Downs)', | |
'Angle A-B, C-D', | |
[1321, 869] | |
,[1451, 1739] | |
,[1266, 1080] | |
,[668, 1074]]; | |
let dd = data.slice(2,6).map((d)=>{ return [(d[0]-300)/2, (d[1]-300)/2]; }); | |
dd.forEach((d, i)=>{ | |
console.log(d,i) | |
paper.circle(d[0], d[1], 5).attr({hue: .45}); | |
paper.text(d[0], d[1], i); | |
}) | |
paper.path(`M${dd[0][0]} ${dd[0][1]}L${dd[1][0]} ${dd[1][1]}`) | |
.attr({"stroke-width": 1, stroke: "green"}); | |
paper.path(`M${dd[2][0]} ${dd[2][1]}L${dd[3][0]} ${dd[3][1]}`) | |
.attr({"stroke-width": 1, stroke: "red"}); | |
function tov(x) { return new Victor(x[0],x[1]); } | |
let v1 = tov(dd[0]); | |
let v2 = tov(dd[1]); | |
let v3 = tov(dd[2]); | |
let v4 = tov(dd[3]); | |
let nn = 0; | |
paper.text(300,100, v1.angleDeg()-v2.angleDeg()); | |
paper.text(300,100+(++nn*20), v3.angleDeg()-v4.angleDeg()); | |
paper.text(300,100+(++nn*20), [v1.angleDeg(),v2.angleDeg(),v3.angleDeg(),v4.angleDeg()].join(",") ); | |
paper.text(300,100+(++nn*20), angle_vectors(dd[0],dd[1],dd[2],dd[3])); | |
paper.text(300,100+(++nn*20), angle_vectors(dd[2],dd[3],dd[0],dd[1])); | |
}); | |
</script> | |
<script id="jsbin-source-javascript" type="text/javascript">var angle_vectors = function (A, B, C, D){ | |
var vector_1 = { | |
x: B[0] - A[0], | |
y: B[1] - A[1] | |
}; | |
var vector_2 = { | |
x: D[0] - C[0], | |
y: D[1] - C[1] | |
}; | |
var rad_angle = Math.atan2(vector_2.y, vector_2.x) - Math.atan2(vector_1.y, vector_1.x); | |
return rad_angle * 180 / Math.PI; | |
} | |
$(document).ready(function() { | |
var paper = new Raphael(document.getElementById('canvas_container'), 2000, 2000); | |
let data = [ 'A - B Plane Angle', | |
'Angle A-B, C-D', | |
[ 1858, 1491 ], | |
[ 1946, 1030 ], | |
[ 1877, 1624 ], | |
[ 2034, 346 ], | |
3.8035487094310243 ]; | |
data = [ 'Facial angle (Downs)', | |
'Angle A-B, C-D', | |
[1321, 869] | |
,[1451, 1739] | |
,[1266, 1080] | |
,[668, 1074]]; | |
let dd = data.slice(2,6).map((d)=>{ return [(d[0]-300)/2, (d[1]-300)/2]; }); | |
dd.forEach((d, i)=>{ | |
console.log(d,i) | |
paper.circle(d[0], d[1], 5).attr({hue: .45}); | |
paper.text(d[0], d[1], i); | |
}) | |
paper.path(`M${dd[0][0]} ${dd[0][1]}L${dd[1][0]} ${dd[1][1]}`) | |
.attr({"stroke-width": 1, stroke: "green"}); | |
paper.path(`M${dd[2][0]} ${dd[2][1]}L${dd[3][0]} ${dd[3][1]}`) | |
.attr({"stroke-width": 1, stroke: "red"}); | |
function tov(x) { return new Victor(x[0],x[1]); } | |
let v1 = tov(dd[0]); | |
let v2 = tov(dd[1]); | |
let v3 = tov(dd[2]); | |
let v4 = tov(dd[3]); | |
let nn = 0; | |
paper.text(300,100, v1.angleDeg()-v2.angleDeg()); | |
paper.text(300,100+(++nn*20), v3.angleDeg()-v4.angleDeg()); | |
paper.text(300,100+(++nn*20), [v1.angleDeg(),v2.angleDeg(),v3.angleDeg(),v4.angleDeg()].join(",") ); | |
paper.text(300,100+(++nn*20), angle_vectors(dd[0],dd[1],dd[2],dd[3])); | |
paper.text(300,100+(++nn*20), angle_vectors(dd[2],dd[3],dd[0],dd[1])); | |
}); | |
</script></body> | |
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var angle_vectors = function (A, B, C, D){ | |
var vector_1 = { | |
x: B[0] - A[0], | |
y: B[1] - A[1] | |
}; | |
var vector_2 = { | |
x: D[0] - C[0], | |
y: D[1] - C[1] | |
}; | |
var rad_angle = Math.atan2(vector_2.y, vector_2.x) - Math.atan2(vector_1.y, vector_1.x); | |
return rad_angle * 180 / Math.PI; | |
} | |
$(document).ready(function() { | |
var paper = new Raphael(document.getElementById('canvas_container'), 2000, 2000); | |
let data = [ 'A - B Plane Angle', | |
'Angle A-B, C-D', | |
[ 1858, 1491 ], | |
[ 1946, 1030 ], | |
[ 1877, 1624 ], | |
[ 2034, 346 ], | |
3.8035487094310243 ]; | |
data = [ 'Facial angle (Downs)', | |
'Angle A-B, C-D', | |
[1321, 869] | |
,[1451, 1739] | |
,[1266, 1080] | |
,[668, 1074]]; | |
let dd = data.slice(2,6).map((d)=>{ return [(d[0]-300)/2, (d[1]-300)/2]; }); | |
dd.forEach((d, i)=>{ | |
console.log(d,i) | |
paper.circle(d[0], d[1], 5).attr({hue: .45}); | |
paper.text(d[0], d[1], i); | |
}) | |
paper.path(`M${dd[0][0]} ${dd[0][1]}L${dd[1][0]} ${dd[1][1]}`) | |
.attr({"stroke-width": 1, stroke: "green"}); | |
paper.path(`M${dd[2][0]} ${dd[2][1]}L${dd[3][0]} ${dd[3][1]}`) | |
.attr({"stroke-width": 1, stroke: "red"}); | |
function tov(x) { return new Victor(x[0],x[1]); } | |
let v1 = tov(dd[0]); | |
let v2 = tov(dd[1]); | |
let v3 = tov(dd[2]); | |
let v4 = tov(dd[3]); | |
let nn = 0; | |
paper.text(300,100, v1.angleDeg()-v2.angleDeg()); | |
paper.text(300,100+(++nn*20), v3.angleDeg()-v4.angleDeg()); | |
paper.text(300,100+(++nn*20), [v1.angleDeg(),v2.angleDeg(),v3.angleDeg(),v4.angleDeg()].join(",") ); | |
paper.text(300,100+(++nn*20), angle_vectors(dd[0],dd[1],dd[2],dd[3])); | |
paper.text(300,100+(++nn*20), angle_vectors(dd[2],dd[3],dd[0],dd[1])); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment