summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client2.cpp51
1 files changed, 4 insertions, 47 deletions
diff --git a/client2.cpp b/client2.cpp
index bed1433..06965f0 100644
--- a/client2.cpp
+++ b/client2.cpp
@@ -508,32 +508,20 @@ int main(int argc, const char** argv)
DroneConnection drone(SOCKETPATH);
navdata_t navdata;
- Mat white(Size(1280,720), CV_8UC3, Scalar(255,255,255));
Mat map1(Size(width,height), CV_32FC1), map2(Size(width,height), CV_32FC1);
calc_undistort_maps(80/1280., 1280,720, map1, map2);
- float scale_factor = 0.2;
float diag = sqrt(1280*1280+720*720);
float px_per_deg = diag / 92.;
- int virtual_canvas_width = 360. * px_per_deg;
- int virtual_canvas_height = 90. * px_per_deg;
-
- int real_canvas_extra_width = sqrt(1280*1280+720*720)*scale_factor/2 + 2;
- int real_canvas_width = virtual_canvas_width * scale_factor + 2*real_canvas_extra_width;
- int real_canvas_height = virtual_canvas_height * scale_factor;
-
int total_x = 100, total_y = 00;
float total_rot = 0.0;
Mat frame(Size(1280,720), CV_8UC3), frame_(Size(1280,720), CV_8UC3), gray, oldgray;
- Mat screencontent(real_canvas_height,real_canvas_width, CV_8UC3);
- Mat screencontent_(real_canvas_height,real_canvas_width, CV_8UC3);
- Mat screencontent_mask(real_canvas_height,real_canvas_width, CV_8UC3);
#define RINGBUF_SIZE 4
- ModuloRingbuffer ringbuf_x(RINGBUF_SIZE, -virtual_canvas_width/2, virtual_canvas_width/2);
+ ModuloRingbuffer ringbuf_x(RINGBUF_SIZE, -180*px_per_deg, 180*px_per_deg);
Ringbuffer ringbuf_y(RINGBUF_SIZE);
ModuloRingbuffer ringbuf_a(RINGBUF_SIZE, -180,180);
ModuloRingbuffer ringbuf_phi(RINGBUF_SIZE, -180,180);
@@ -627,7 +615,7 @@ int main(int argc, const char** argv)
ringbuf_theta2.put(navdata.theta);
ringbuf_theta.put(navdata.theta);
- double xdiff = fixup_range( ringbuf_x.get() - px_per_deg*ringbuf_psi.get(), -virtual_canvas_width/2, virtual_canvas_width/2);
+ double xdiff = fixup_range( ringbuf_x.get() - px_per_deg*ringbuf_psi.get(), -180*px_per_deg, 180*px_per_deg);
double ydiff = ringbuf_y.get() + px_per_deg*ringbuf_theta.get();
double adiff = fixup_angle(ringbuf_a.get() - (-ringbuf_phi.get()));
@@ -638,7 +626,7 @@ int main(int argc, const char** argv)
xdiff*=0.02;
ydiff*=0.02;
adiff*=0.5;
- total_x = fixup_range(total_x - xdiff, -virtual_canvas_width/2, virtual_canvas_width/2);
+ total_x = fixup_range(total_x - xdiff, -180*px_per_deg, 180*px_per_deg);
total_y = total_y - ydiff;
total_rot = fixup_angle(total_rot - adiff);
ringbuf_x.add(-xdiff);
@@ -692,7 +680,7 @@ int main(int argc, const char** argv)
glUseProgram(drawOnCanvasProgram);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texVideo);
- glUniform1f(uniCamYaw,(float)total_x/virtual_canvas_width*2*PI);
+ glUniform1f(uniCamYaw,(float)total_x/(360*px_per_deg)*2*PI);
glUniform1f(uniCamPitch,-(float)total_y/px_per_deg/180.*PI);
glUniform1f(uniCamRoll,-total_rot/180.*PI);
glDrawArrays(GL_TRIANGLES, 0, 6);
@@ -706,8 +694,6 @@ int main(int argc, const char** argv)
glBindTexture(GL_TEXTURE_2D, canvasTex);
/*glUniform1f(uniEyeYaw,3.1415+ringbuf_psi2.get()/180.*PI);
glUniform1f(uniEyePitch,-ringbuf_theta2.get()/180.*PI);
- //glUniform1f(uniEyeYaw,3.1415+(float)total_x/virtual_canvas_width*2*PI);
- //glUniform1f(uniEyePitch,(float)total_y/px_per_deg/180.*PI);
glUniform1f(uniEyeRoll,0);*/
glUniform1f(uniEyeYaw,oculus_yaw);
glUniform1f(uniEyePitch,-oculus_pitch);
@@ -753,35 +739,6 @@ int main(int argc, const char** argv)
- printf("sh: %i\t%i\t%f\n", shift_x, shift_y, angle);
- printf("tot: %i\t%i\t%f\n", total_x, total_y, total_rot);
-
- Mat rotmat = getRotationMatrix2D(Point2f(width/2,height/2), total_rot, scale_factor);
- printf("dingskram %i\n", rotmat.type());
- rotmat.at<double>(0,2) += total_x*scale_factor - width/2 + real_canvas_width/2;
- rotmat.at<double>(1,2) += total_y*scale_factor - height/2 + real_canvas_height/2;
-
- warpAffine(frame, screencontent_ , rotmat, Size(real_canvas_width, real_canvas_height));
- warpAffine(white, screencontent_mask, rotmat, Size(real_canvas_width, real_canvas_height));
-
- threshold(screencontent_mask, screencontent_mask, 254, 255, THRESH_BINARY);
- erode(screencontent_mask, screencontent_mask, Mat::ones(2,2, CV_8U));
-
- Mat screencontent_mask2;
- erode(screencontent_mask, screencontent_mask2, Mat::ones(30,200, CV_8U));
-
- screencontent = (screencontent & (~screencontent_mask2)) + (screencontent_ & screencontent_mask2);
- Mat screencontent_displayed = (screencontent & (~screencontent_mask)) + (screencontent_ & screencontent_mask);
-
- printf("%i/%i\n", screencontent.size().width, screencontent.size().height);
- if (total_x > 0)
- screencontent.colRange(0, (2*real_canvas_extra_width)) = screencontent.colRange( real_canvas_width - 2*real_canvas_extra_width, real_canvas_width);
- else
-
- screencontent.colRange( real_canvas_width - 2*real_canvas_extra_width, real_canvas_width) = screencontent.colRange(0, (2*real_canvas_extra_width));
-
- imshow("screencontent", screencontent_displayed);
-
oldgray = gray.clone();