From ee4db4b804443bcad410c30be88bcdce7abf6008 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Mon, 29 Jan 2018 00:50:32 +0000 Subject: multi shapes --- .../example/bin/example.app/Contents/MacOS/example | Bin 11690516 -> 11696052 bytes ofxHelios/example/obj/osx/Release/src/ofApp.o | Bin 33912 -> 49548 bytes ofxHelios/example/src/ofApp.cpp | 46 ++++++++++----- ofxHelios/libs/libheliosdac/includes/HeliosDac.h | 12 +++- ofxHelios/src/ofxHelios.cpp | 64 +++++++++++++++------ ofxHelios/src/ofxHelios.h | 9 ++- 6 files changed, 94 insertions(+), 37 deletions(-) (limited to 'ofxHelios') diff --git a/ofxHelios/example/bin/example.app/Contents/MacOS/example b/ofxHelios/example/bin/example.app/Contents/MacOS/example index a4f6d56..a6be470 100755 Binary files a/ofxHelios/example/bin/example.app/Contents/MacOS/example and b/ofxHelios/example/bin/example.app/Contents/MacOS/example differ diff --git a/ofxHelios/example/obj/osx/Release/src/ofApp.o b/ofxHelios/example/obj/osx/Release/src/ofApp.o index 1dc0536..b1b70cf 100644 Binary files a/ofxHelios/example/obj/osx/Release/src/ofApp.o and b/ofxHelios/example/obj/osx/Release/src/ofApp.o differ diff --git a/ofxHelios/example/src/ofApp.cpp b/ofxHelios/example/src/ofApp.cpp index e629ae0..671529b 100644 --- a/ofxHelios/example/src/ofApp.cpp +++ b/ofxHelios/example/src/ofApp.cpp @@ -1,8 +1,9 @@ #include "ofApp.h" -int MAX_POINTS=30000; -int NUM_POINTS=1024; +int MAX_POINTS=20000; +int NUM_POINTS=128; int LASER_INTENSITY=37; +int CIRCLE_RADIUS=256; //-------------------------------------------------------------- void testApp::setup(){ @@ -12,7 +13,7 @@ void testApp::setup(){ //-------------------------------------------------------------- void testApp::update(){ - ofSetWindowTitle(ofToString(ofGetFrameRate(), 2)); + } @@ -47,22 +48,37 @@ void testApp::draw(){ float pfactor=(PI*2)/NUM_POINTS; - colourPolyline line; + vector lines; + + for (int k=0;k<2;k++){ + for (int j=0;j<2;j++){ + + colourPolyline line; + + for (int i=0;i0){ + ofSetWindowTitle(ofToString(ofGetFrameRate(), 2)+" fps laser points: "+ofToString(num)); + } + else { + ofSetWindowTitle("laser error "); } - line.draw(); - - laser.draw(line); + } diff --git a/ofxHelios/libs/libheliosdac/includes/HeliosDac.h b/ofxHelios/libs/libheliosdac/includes/HeliosDac.h index ed1c5fc..333789d 100644 --- a/ofxHelios/libs/libheliosdac/includes/HeliosDac.h +++ b/ofxHelios/libs/libheliosdac/includes/HeliosDac.h @@ -66,7 +66,7 @@ cannot receive a new frame until the currently playing frame finishes, freeing u #endif //point data structure -typedef struct +struct HeliosPoint { std::uint16_t x; //12 bit (from 0 to 0xFFF) std::uint16_t y; //12 bit (from 0 to 0xFFF) @@ -74,7 +74,15 @@ typedef struct std::uint8_t g; //8 bit (from 0 to 0xFF) std::uint8_t b; //8 bit (from 0 to 0xFF) std::uint8_t i; //8 bit (from 0 to 0xFF) -} HeliosPoint; + HeliosPoint( + std::uint16_t _x, + std::uint16_t _y, + std::uint8_t _r, + std::uint8_t _g, + std::uint8_t _b, + std::uint8_t _i + ) : x(_x),y(_y),r(_r),g(_g),b(_b),i(_i) { } +}; class HeliosDac { diff --git a/ofxHelios/src/ofxHelios.cpp b/ofxHelios/src/ofxHelios.cpp index d05e062..7c934b5 100644 --- a/ofxHelios/src/ofxHelios.cpp +++ b/ofxHelios/src/ofxHelios.cpp @@ -19,18 +19,24 @@ put in dwell points */ -int ofxHelios::draw(vector &points,ofColor colour,int intensity){ +int ofxHelios::draw(vector &lines,ofColor colour,int intensity){ return 0; } int ofxHelios::draw(ofPolyline &line,ofColor colour,int intensity){ colourPolyline col=colourPolyline(line,colour); - return draw(col); + return draw(col,intensity); } int ofxHelios::draw(colourPolyline &line, int intensity){ + vector lines; + lines.push_back(line); + return draw(lines,intensity); +} + +int ofxHelios::draw(vector &lines, int intensity){ //todo: move to a thread //todo: add a transform //POC @@ -42,28 +48,52 @@ int ofxHelios::draw(colourPolyline &line, int intensity){ while (!dac.GetStatus(device)); //timeout for this? //assemble data - HeliosPoint points[line.size()]; - - for (int i=0;i>8), - (uint8_t)(((line.getColourAt(i).g)*laserintensity)>>8), - (uint8_t)(((line.getColourAt(i).b)*laserintensity)>>8), - (uint8_t)intensity - }); + vector points; + + ofPoint prev_point=lines[0][0]; + + for (auto& line:lines){ + float joindist=prev_point.distance(line[0]); + if (joindist>SUBDIVIDE){ + //printf("ofxHelios: creating %i join points\n",(int)joindist/SUBDIVIDE); + } + for (float j=0;j>8), + (uint8_t)(((line.getColourAt(i).g)*laserintensity)>>8), + (uint8_t)(((line.getColourAt(i).b)*laserintensity)>>8), + (uint8_t)intensity + )); + } + for (int k=0;k @@ -59,9 +61,10 @@ public: return pps; } int draw(colourPolyline &line, int intensity=255); - int draw(ofPolyline &points,ofColor colour=ofColor(255,255,255),int intensity=255); - int draw(vector &points,ofColor colour=ofColor(255,255,255),int intensity=255); - + int draw(ofPolyline &line,ofColor colour=ofColor(255,255,255),int intensity=255); + int draw(vector &lines,ofColor colour=ofColor(255,255,255),int intensity=255); + int draw(vector &lines, int intensity=255); + void threadedFunction(); //isReady() -- cgit v1.2.3