From be06edbcfd1213ea1658d36f8934493a92205aac Mon Sep 17 00:00:00 2001 From: pommicket Date: Fri, 1 Jul 2016 17:43:58 -0400 Subject: Created pommicket.github.io --- js/2pi.js | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 js/2pi.js (limited to 'js/2pi.js') diff --git a/js/2pi.js b/js/2pi.js new file mode 100644 index 0000000..54d59d7 --- /dev/null +++ b/js/2pi.js @@ -0,0 +1,100 @@ +var vertices = []; + +function mouseDragged() +{ + if (document.getElementById("info").innerHTML != "") + return; + if (mouseX < 0 || mouseX > width || mouseY < 0 || mouseY > width) + return; + stroke(0); + vertices.push([mouseX, mouseY]); + if (vertices.length > 1) + line(mouseX, mouseY, vertices[vertices.length-2][0], vertices[vertices.length-2][1]); +} + +function circumference() +{ + var total = 0; + for (var i = 1; i < vertices.length; i++) + { + total += dist(vertices[i-1][0], vertices[i-1][1], vertices[i][0], vertices[i][1]); + } + return total; +} + +function center() +{ + var centerX = 0; + var centerY = 0; + for (var i = 0; i < vertices.length; i++) + { + centerX += vertices[i][0] / vertices.length; + centerY += vertices[i][1] / vertices.length; + } + return [centerX, centerY]; +} + +function twoPiApprox() +{ + var o = center(); + var c = circumference(); + + ellipseMode(CENTER); + fill(0, 0, 200); + noStroke(); + ellipse(o[0], o[1], 5, 5); + + var avgR = 0; + var minLocation; + var maxLocation; + for (var i = 0; i < vertices.length; i++) + { + var d = dist(vertices[i][0], vertices[i][1], o[0], o[1]); + avgR += d / vertices.length; + + } + + stroke(0, 255, 0); + noFill(); + line(o[0], o[1], o[0]+avgR, o[1]); + stroke(255, 0, 0); + ellipse(o[0], o[1], 2*avgR, 2*avgR); + stroke(255, 200, 0); + ellipse(o[0], o[1], c/PI, c/PI); + + + return c/(2*avgR); + +} + +function setup() +{ + createCanvas(500, 500); + stroke(255, 0, 0); + line(0, 0, width-1, 0); + line(width-1, 0, width-1, height-1); + line(0, height-1, width-1, height-1); + line(0, 0, 0, height-1); +} + +function calculate() +{ + var approx = twoPiApprox(); + var avgPi = approx; + var percentError; + if (avgPi > PI) + { + percentError = 100*(avgPi/PI - 1); + } + else + { + percentError = 100*(PI/avgPi - 1); + } + var div = document.getElementById("info"); + div.innerHTML = "Your approximation   |   True value
2π = " + 2 * avgPi + " | " + TWO_PI + "
π = " + + + avgPi + " | " + PI + ".
" + percentError + "% error.
" + + "The blue dot is the center of your shape. The green line is the average radius of the shape.
" + + "The red circle is a circle with the same radius as your shape, and the orange circle is a
" + + "circle with the same circumference as your shape. The closer they are, the better your
" + + "approximation of π"; +} \ No newline at end of file -- cgit v1.2.3