1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#include "ofApp.h"
int MAX_POINTS=20000;
int LASER_INTENSITY=37;
//--------------------------------------------------------------
void testApp::setup(){
laser.set_pts(MAX_POINTS);
laser.set_intensity(LASER_INTENSITY);
}
//--------------------------------------------------------------
void testApp::update(){
}
ofPolyline polyLineTransform(const ofPolyline& poly, ofMatrix4x4 xform){
ofPolyline tempPoly;
for (auto& p:poly){
tempPoly.addVertex(ofVec3f(p)*xform);
}
return tempPoly;
}
ofPolyline makePolygon(int num,float diam){
ofPolyline poly;
float step=PI*2/num;
for (int i=0;i<=num;i++){
poly.addVertex(cos(step*i)*diam,sin(step*i)*diam);
}
return poly;
}
//--------------------------------------------------------------
void testApp::draw(){
ofBackground(0);
ofSetColor(255,255,255);
ofMatrix4x4 m = ofMatrix4x4::newIdentityMatrix();
m.rotateRad(ofGetElapsedTimef(),0,0,1);
m.translate(ofGetWidth()/2,ofGetHeight()/2,0);
ofPolyline square=polyLineTransform(makePolygon(4,200),m);
square.draw();
int num = laser.draw(square);
if (num>0){
ofSetWindowTitle(ofToString(ofGetFrameRate(), 2)+" fps laser points: "+ofToString(num));
}
else {
ofSetWindowTitle("laser error ");
}
}
//--------------------------------------------------------------
void testApp::keyPressed(int key){
}
//--------------------------------------------------------------
void testApp::keyReleased(int key){
}
//--------------------------------------------------------------
void testApp::mouseMoved(int x, int y ){
/// int i = 1;
/// while ( i<bounds.size()) {
/// float angle = atan2(line[i-1].y - line[i].y, line[i-1].x - line[i].x);
/// bounds[i].set(bounds[i-1].x - cos(angle) * 20, bounds[i-1].y - sin(angle) * 20);
/// i++;
/// }
}
//--------------------------------------------------------------
void testApp::mouseDragged(int x, int y, int button){
//line.addVertex(x, y);
}
//--------------------------------------------------------------
void testApp::mousePressed(int x, int y, int button){
//line.clear();
//current=-100;
}
//--------------------------------------------------------------
void testApp::mouseReleased(int x, int y, int button){
}
//--------------------------------------------------------------
void testApp::windowResized(int w, int h){
}
//--------------------------------------------------------------
void testApp::gotMessage(ofMessage msg){
}
//--------------------------------------------------------------
void testApp::dragEvent(ofDragInfo dragInfo){
}
|