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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
#include "ofApp.h"
int MAX_POINTS=20000;
int NUM_POINTS=128;
int LASER_INTENSITY=37;
int CIRCLE_RADIUS=256;
//--------------------------------------------------------------
void testApp::setup(){
laser.set_pts(MAX_POINTS);
laser.set_intensity(LASER_INTENSITY);
}
//--------------------------------------------------------------
void testApp::update(){
}
//--------------------------------------------------------------
void testApp::draw(){
ofBackground(0);
ofSetColor(255,255,255);
/*
if (line.size()){
current++;
}
ofPolyline todraw;
for (int i=max(0,min(current,(int)line.size())) ;i<line.size();i++){
todraw.addVertex(line[i]);
}
what should the default coordinate system be?
centred?
the coordinate system goes from 0-4096 in X and Y
It's preferable that drawing is centred around 2000
Let's offset the centre of the screen to 0 and draw natively from there
Let's apply a scaling factor which can increase coords
And a calibration/ warp
The aim is to be able to preview in any size window
todraw.draw();
*/
float pfactor=(PI*2)/NUM_POINTS;
vector <colourPolyline> lines;
for (int k=0;k<2;k++){
for (int j=0;j<2;j++){
colourPolyline line;
for (int i=0;i<NUM_POINTS+1;i++){
line.addVertex(
((cos(float(i)*pfactor)+1)*CIRCLE_RADIUS)+(ofGetWidth()/2)+(-(CIRCLE_RADIUS+200)+(k*400)),
((sin(float(i)*pfactor)+1)*CIRCLE_RADIUS)+(ofGetHeight()/2)+(-(CIRCLE_RADIUS+200)+(j*400)),
(sin(float(i+(ofGetElapsedTimef()*30*j))*pfactor)+1)*128,
(sin(float(i+(ofGetElapsedTimef()*57*k))*pfactor)+1)*128,
(sin(float(i+(ofGetElapsedTimef()*101*(j+k)))*pfactor)+1)*128
);
}
lines.push_back(line);
line.draw();
}
}
int num = laser.draw(lines);
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){
}
|