From 45e20110a2aba09cb99b1cb049ffe6202fe79de7 Mon Sep 17 00:00:00 2001 From: Andrew Lawson Date: Fri, 28 Nov 2014 19:59:53 -0500 Subject: [PATCH] Added geometric median framework. --- geometric_separators.pde | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/geometric_separators.pde b/geometric_separators.pde index 5a2f0a4..1451df9 100644 --- a/geometric_separators.pde +++ b/geometric_separators.pde @@ -26,17 +26,49 @@ void setup() { // On mouse press void mousePressed() { + // If mouse presses reset button if ((mouseX >= reset_x && mouseX <= (reset_x + reset_w)) && (mouseY >= reset_y && mouseY <= (reset_y + reset_h))) { // Reset input and background input.clear(); } + // If mouse presses calculate button + else if ((mouseX >= reset_x && mouseX <= (reset_x + reset_w)) && + (mouseY >= reset_y && mouseY <= (reset_y + reset_h))) { + // Get sorted input points + } else { PShape new_ellipse = createShape(ELLIPSE, mouseX - 12.5, mouseY - 12.5, 25, 25); input.add(new_ellipse); } redraw(); -} +} + +// Estimate centerpoint +void approxCenter(ArrayList input) { + if (input.size() == 1) { + return ArrayList.get(0); + } + else { + // Sample points + + } +} + +// Estimate the geometric median - dynamic programming +void geomMedian() { + // Memoization hash tables + HashMap left = new HashMap(): + HashMap right = new HashMap(): + HashMap up = new HashMap(): + HashMap down = new HashMap(): + // Sum of squares values + ArrayList leftSq = new ArrayList(); + ArrayList rightSq = new ArrayList(); + for (PShape circle : inputSorted) { + + } +} // Draw void draw() { @@ -47,6 +79,6 @@ void draw() { text("Calculate.", calc_x + 25, calc_y - 10); for (PShape ellipse : input) { shape(ellipse); - fill(0); + fill(255); } }