From 17baa76822d7d9322a3f082ffff2b02efb233fc5 Mon Sep 17 00:00:00 2001 From: laa11004 Date: Fri, 4 Dec 2015 21:57:44 -0500 Subject: [PATCH] merging menu and selector with main sketch --- .DS_Store | Bin 6148 -> 6148 bytes kdtest/Menu.pde | 42 +++++++++++++++++++ kdtest/Selector.pde | 98 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 140 insertions(+) create mode 100644 kdtest/Menu.pde create mode 100644 kdtest/Selector.pde diff --git a/.DS_Store b/.DS_Store index c06a023db328b127312895887f1ddcb94e3d8bde..fddd07bcbf26795a82a949b7a17fd0f04f929738 100644 GIT binary patch delta 407 zcmZoMXfc=|#>B!ku~2NHo}wrR0|Nsi1A_nqLoq{1Qh9MfQcix-W=5vv%=I8CHim45 z6owLpRAgzO__L&foXp}91A`lkOw25-Z0sDITwGk7T>PA|!5R7G!6k_$rNvH(MbThh zW=d)jlpT;*k^y6fB`mu~2NHo}wr#0|Nsi1A_nqLoq{1T1s(pQht8U#KPrLAPF{xY=#tu z5{6V{Nyf>wtP-0`SSK@WR^VV~nb=^knVo~518C%CL5}atlles~fu?~?WrETyn0 && y<=25){ return 1; } + else if( 025 && y<=51){ return 2; } + else if( 051 && y<=77){ return 3; } + else if( 077 && y<=103){ return 4; } + else { return 0; } + } + + void draw(){ + pushStyle(); + rect(0,0,60,25,0,7,7,0);//rect button + rect(15,20,5,10);//rect icon + rect(0,26,60,25,0,7,7,0);//circle button + ellipseMode(CORNER); + ellipse(0.0,26.0,60.0,25.0);//circle icon + rect(0,52,60,25,0,7,7,0);//NN button + ellipse(0.0,52.0,60.0,25.0);//NN icon + rect(0,78,60,25,0,7,7,0);//InserPoint button + popStyle(); + selector.draw(); + } + + void mousePressed(){ + int button = onaButton(mouseX,mouseY); + if( button != 0 ){ activate(button); } + else{ selector.mousePressed(); } + } + + void mouseDragged(){ selector.stretchSelection(); } + + void mouseReleased(){ selector.resetSelection(); } +} diff --git a/kdtest/Selector.pde b/kdtest/Selector.pde new file mode 100644 index 0000000..7268d49 --- /dev/null +++ b/kdtest/Selector.pde @@ -0,0 +1,98 @@ +class Selector{ + float _startX,_startY, _endX, _endY, _state; + float _a, _b, _radius; + boolean _selecting, _animating, _searching; + int _select_mode; + Point point; + + Selector(){ + _selecting = false; + _animating = false; + _searching = false; + _a = 0; + _b = 0; + _select_mode = 1; + _endX = -1; + _endY = -1; + } + + void setSelectMode(int mode){ _select_mode = mode; } + + void mousePressed(){//triggered on mousePressed() + _startX = mouseX; + _startY = mouseY; + switch(_select_mode){ + case 1: _selecting = true; //rectangular selection + break; + case 2: _selecting = true; //ellipse selection + break; + case 3: _searching = true; //nearest neighbor search + _state = 0.0; + _animating = true; + break; + case 4: Point p = cam.transform(new Point(mouseX, mouseY)); //place point + pointList.add(p); + tree.insert(p); + } +} + + void resetSelection(){//triggered on mouseReleased() + if(_selecting){ //selecting with rect or circle + switch(_select_mode){ + case 1: //_tree.rectQuery(cam.transform(new Point(_startX,_startY)),cam.transform(new Point(_endX,_endY))); + break; + case 2: //_tree.circleQuery(cam.transform(new Point(_a,_b)), + } + _selecting = false; + _startX = -1; + _startY = -1; + } + else{ + //_tree.neighborQuery(cam.transform(new Point(_a,_b)), + _searching = false; + } + _endX = -1; + _endY = -1; + _a = 0; + _b = 0; + } + void stretchSelection(){ + if(_selecting){ + _endX = mouseX-_startX; + _endY = mouseY-_startY; + } + } + + void draw(){ + pushStyle(); + stroke(color(100,100,100)); + fill(c_HILITE); + if(_selecting){ + switch(_select_mode){ + case 1: rect(_startX,_startY,_endX,_endY); + break; + case 2: _a = mouseX-_startX; + _b = mouseY-_startY; + _radius = sqrt(_a*_a+_b*_b); + ellipseMode(RADIUS); + ellipse(_startX,_startY,_radius,_radius); + line(_startX,_startY,mouseX,mouseY); + break; + } + } + if(_animating){ neighborAnimation(); } + popStyle(); + } + + void neighborAnimation(){ + float elapsedTime = constrain(1f/frameRate, 16f/1000f, 32f/1000f); + _state += max( 8 * elapsedTime * sin(_state*PI), 0.01); + float r = _state * 100; + ellipseMode(RADIUS); + ellipse(_startX,_startY,r,r); + if(_state > 1.0) { + _animating = false; + _searching = false; + } + } +}