void MainWindow::keyPressEvent(QKeyEvent *qkeyevent) //Tatstertur ............. { switch(qkeyevent->key()) { case Qt::Key_Up: vor(); break; case Qt::Key_Down: back(); break; case Qt::Key_Right: rechts(); break; case Qt::Key_Left: links(); break; case Qt::Key_Space: stop(); break; case Qt::Key_X: hoch(); break; case Qt::Key_Y: runter(); break; } }
void CVT::compute_weighted_cvt(cv::Mat & img, std::vector<cv::Point2d> & sites) { //YH initialize int site_size = sites.size(); this->cells.resize(site_size); for (int i = 0; i < site_size; i++) { this->cells[i].site = sites[i]; } float max_dist_moved = FLT_MAX; //YH start VOR int iteration = 0; do { vor(img); //compute voronoi max_dist_moved = move_sites(img); if (debug) std::cout << "[" << iteration << "] max dist moved = " << max_dist_moved << std::endl; iteration++; } while (max_dist_moved>max_site_displacement && iteration < this->iteration_limit); if (debug) cv::waitKey(); }
QList<Vector2D> Voronoi_Diagram::calculate(QList<Vector2D> in_points) { //consider some points std::vector<Point_2> points; for(int i=0;i<in_points.size();i++) { points.push_back(Point_2(in_points.at(i).x,in_points.at(i).y)); } Delaunay_triangulation_2 dt2; //insert points into the triangulation dt2.insert(points.begin(),points.end()); //construct a rectangle Iso_rectangle_2 bbox(Field::MinX,Field::MinY,Field::MaxX,Field::MaxY); Cropped_voronoi_from_delaunay vor(bbox); //extract the cropped Voronoi diagram dt2.draw_dual(vor); //print the cropped Voronoi diagram as segments std::stringstream ss; QList<Vector2D> out; wm->voronoi.clear(); for(int i=0;i<vor.m_cropped_vd.size();i++) { Segment_2 tmp = vor.m_cropped_vd.at(i); Point_2 start = tmp.vertex(0) , end = tmp.vertex(1); Vector2D first(floor(start.x()),floor(start.y())) , second(floor(end.x()),floor(end.y())); if( !out.contains(first) ) { if( wm->kn->IsInsideField(first) ) out.append(first); } if( !out.contains(second) ) { if( wm->kn->IsInsideField(second) ) out.append(second); } Segment2D seg(first,second); wm->voronoi.append(seg); } return out; }
void test(){ std::vector<Point_2> points; points.push_back(Point_2(0,0)); points.push_back(Point_2(1,1)); points.push_back(Point_2(0,1)); DT dt2; //insert points into the triangulation dt2.insert(points.begin(),points.end()); //construct a rectangle Iso_rectangle_2 bbox(-1,-1,2,2); Cropped_voronoi_from_delaunay vor(bbox); //extract the cropped Voronoi diagram dt2.draw_dual(vor); //print the cropped Voronoi diagram as segments std::copy(vor.m_cropped_vd.begin(),vor.m_cropped_vd.end(), std::ostream_iterator<Segment_2>(std::cout,"\n")); }
void xop_s1 ( __m128i a1_1, __m128i a1_2, __m128i a2_1, __m128i a2_2, __m128i a3_1, __m128i a3_2, __m128i a4_1, __m128i a4_2, __m128i a5_1, __m128i a5_2, __m128i a6_1, __m128i a6_2, __m128i *out1, __m128i *out2, __m128i *out3, __m128i *out4 ) { __m128i a1=_mm_xor_si128 (a1_1, a1_2); __m128i a2=_mm_xor_si128 (a2_1, a2_2); __m128i a3=_mm_xor_si128 (a3_1, a3_2); __m128i a4=_mm_xor_si128 (a4_1, a4_2); __m128i a5=_mm_xor_si128 (a5_1, a5_2); __m128i a6=_mm_xor_si128 (a6_1, a6_2); __m128i ones = ONES; vtype x0F0F3333, x3C3C3C3C, x55FF55FF, x69C369C3, x0903B73F, x09FCB7C0, x5CA9E295; vtype x55AFD1B7, x3C3C69C3, x6993B874; vtype x5CEDE59F, x09FCE295, x5D91A51E, x529E962D; vtype x29EEADC0, x4B8771A3, x428679F3, x6B68D433; vtype x5BA7E193, x026F12F3, x6B27C493, x94D83B6C; vtype x965E0B0F, x3327A113, x847F0A1F, xD6E19C32; vtype x0DBCE883, x3A25A215, x37994A96; vtype xC9C93B62, x89490F02, xB96C2D16; vtype x0, x1, x2, x3; vsel(x0F0F3333, a3, a2, a5); vxor(x3C3C3C3C, a2, a3); vor(x55FF55FF, a1, a4); vxor(x69C369C3, x3C3C3C3C, x55FF55FF); vsel(x0903B73F, a5, x0F0F3333, x69C369C3); vxor(x09FCB7C0, a4, x0903B73F); vxor(x5CA9E295, a1, x09FCB7C0); vsel(x55AFD1B7, x5CA9E295, x55FF55FF, x0F0F3333); vsel(x3C3C69C3, x3C3C3C3C, x69C369C3, a5); vxor(x6993B874, x55AFD1B7, x3C3C69C3); vsel(x5CEDE59F, x55FF55FF, x5CA9E295, x6993B874); vsel(x09FCE295, x09FCB7C0, x5CA9E295, a5); vsel(x5D91A51E, x5CEDE59F, x6993B874, x09FCE295); vxor(x529E962D, x0F0F3333, x5D91A51E); vsel(x29EEADC0, x69C369C3, x09FCB7C0, x5CEDE59F); vsel(x4B8771A3, x0F0F3333, x69C369C3, x5CA9E295); vsel(x428679F3, a5, x4B8771A3, x529E962D); vxor(x6B68D433, x29EEADC0, x428679F3); vsel(x5BA7E193, x5CA9E295, x4B8771A3, a3); vsel(x026F12F3, a4, x0F0F3333, x529E962D); vsel(x6B27C493, x6B68D433, x5BA7E193, x026F12F3); vnot(x94D83B6C, x6B27C493); vsel(x0, x94D83B6C, x6B68D433, a6); vxor(*out1, *out1, x0); vsel(x965E0B0F, x94D83B6C, a3, x428679F3); vsel(x3327A113, x5BA7E193, a2, x69C369C3); vsel(x847F0A1F, x965E0B0F, a4, x3327A113); vxor(xD6E19C32, x529E962D, x847F0A1F); vsel(x1, xD6E19C32, x5CA9E295, a6); vxor(*out2, *out2, x1); vsel(x0DBCE883, x09FCE295, x3C3C69C3, x847F0A1F); vsel(x3A25A215, x3327A113, x5CA9E295, x0903B73F); vxor(x37994A96, x0DBCE883, x3A25A215); vsel(x3, x37994A96, x529E962D, a6); vxor(*out4, *out4, x3); vsel(xC9C93B62, x94D83B6C, x69C369C3, x5D91A51E); vsel(x89490F02, a3, xC9C93B62, x965E0B0F); vsel(xB96C2D16, x89490F02, x3C3C3C3C, x3A25A215); vsel(x2, xB96C2D16, x6993B874, a6); vxor(*out3, *out3, x2); }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //IPS Stationen Arduino-Simulation /*ui->s1x->setValue(1000);ui->s1y->setValue(1000);ui->s1z->setValue(0); ui->s2x->setValue(2000);ui->s2y->setValue(1000);ui->s2z->setValue(0); ui->s3x->setValue(2000);ui->s3y->setValue(0000);ui->s3z->setValue(1000); ui->s4x->setValue(1000);ui->s4y->setValue(0000);ui->s4z->setValue(0); ui->s5x->setValue(0000);ui->s5y->setValue(0000);ui->s5z->setValue(1000); ui->s6x->setValue(0000);ui->s6y->setValue(1000);ui->s6z->setValue(0); ui->s7x->setValue(0000);ui->s7y->setValue(2000);ui->s7z->setValue(1000); ui->s8x->setValue(1000);ui->s8y->setValue(2000);ui->s8z->setValue(0); ui->s9x->setValue(2000);ui->s9y->setValue(2000);ui->s9z->setValue(1000);*/ //Ende IPS Stationen; //Karte erstellen map = new QGraphicsScene(this); ui->graphicsView->setScene(map); ui->graphicsView->scale(0.1,0.1); //zoomen der Karte so ist platz für 7,5 meter // GUI Einstellunegn setWindowTitle(tr("Zentrale - Sturzflug@daedalus")); //PortBox ComPort Einstellungen //COM Ports suchen foreach (QextPortInfo info, QextSerialEnumerator::getPorts()) ui->XbeeportBox->addItem(info.portName); foreach (QextPortInfo info, QextSerialEnumerator::getPorts()) ui->IPSportBox->addItem(info.portName); //selber eintargen Möglich machen ui->XbeeportBox->setEditable(true); ui->IPSportBox->setEditable(true); //Port Box STOP //BaudRateBox kompatible Werte mit Win und Linux ui->XbeeBaudRateBox->addItem("1200", BAUD1200); ui->XbeeBaudRateBox->addItem("2400", BAUD2400); ui->XbeeBaudRateBox->addItem("4800", BAUD4800); ui->XbeeBaudRateBox->addItem("9600", BAUD9600); ui->XbeeBaudRateBox->addItem("19200", BAUD19200); ui->XbeeBaudRateBox->addItem("115200", BAUD115200); ui->XbeeBaudRateBox->setCurrentIndex(3); //Vorsicht nur Ändern wenn auch PorSettings geändert ui->IPSBaudRateBox->addItem("115200", BAUD115200); //IPS nur mit dieser BaudRate ui->IPSBaudRateBox->setCurrentIndex(0); //Vorsicht nur Ändern wenn auch PorSettings geändert // BaudRateBox STOP //ComText Box ui->XbeeComText->setReadOnly(true); ui->IPSComText->setReadOnly(true); //ComText Box STOP Xbeetimer = new QTimer(this); Xbeetimer->setInterval(80); IPStimer = new QTimer(this); IPStimer->setInterval(155); //könnte probleme lösen Refreshtimer = new QTimer(this); Refreshtimer->setInterval(ui->refreshTime->value()); //Aktuallisierungsrate aus der GUI in ms //Vordefinierte Einstelluneg PortSettings Xbeesettings = {BAUD9600, DATA_8, PAR_NONE, STOP_1, FLOW_OFF, 10}; Xbeeport = new QextSerialPort(ui->XbeeportBox->currentText(), Xbeesettings, QextSerialPort::Polling); PortSettings IPSsettings = {BAUD115200, DATA_8, PAR_NONE, STOP_1, FLOW_OFF, 10}; IPSport = new QextSerialPort(ui->IPSportBox->currentText(), IPSsettings, QextSerialPort::Polling); //Vordefinierte Einstellungen STOP //Connectoren ----------------------------------------------------------------------------------------------------- //globale Connectoren //connect(ui->TestButton, SIGNAL(clicked()), SLOT(onTestButtonClicked())); connect(ui->reset_imu, SIGNAL(clicked()), SLOT(onreset_imuClicked())); //Xbee connectoren connect(ui->XbeeBaudRateBox, SIGNAL(currentIndexChanged(int)), SLOT(XbeeonBaudRateChanged(int))); connect(ui->XbeeportBox, SIGNAL(editTextChanged(QString)), SLOT(XbeeonPortNameChanged(QString))); connect(Xbeetimer, SIGNAL(timeout()), SLOT(XbeeonReadyRead())); connect(Xbeeport, SIGNAL(readyRead()), SLOT(XbeeonReadyRead())); //IPS connectoren connect(ui->IPSBaudRateBox, SIGNAL(currentIndexChanged(int)), SLOT(IPSonBaudRateChanged(int))); connect(ui->IPSportBox, SIGNAL(editTextChanged(QString)), SLOT(IPSonPortNameChanged(QString))); connect(IPStimer, SIGNAL(timeout()), SLOT(IPSonReadyRead())); connect(IPSport, SIGNAL(readyRead()), SLOT(IPSonReadyRead())); connect(ui->posStationSetzen, SIGNAL(clicked()), SLOT(setPosStation())); //refresh connector ZENTRALES Takt-Element connect(Refreshtimer, SIGNAL(timeout()), SLOT(refresh())); connect(ui->setRefresh, SIGNAL(clicked()), SLOT(setrefreshrate())); // Karte connect(ui->deletkoordinaten, SIGNAL(clicked()), SLOT(deletekoordinaten())); //Einstellungen connect(ui->setAbweichung, SIGNAL(clicked()), SLOT(setAbweichung())); connect(ui->setZiel, SIGNAL(clicked()), SLOT(setZiel())); connect(ui->setZieltolleranz, SIGNAL(clicked()), SLOT(setZieltolleranz())); connect(ui->setHoehe, SIGNAL(clicked()), SLOT(setHoehe())); connect(ui->setFilter, SIGNAL(clicked()), SLOT(setFilter())); connect(ui->setHindernisse, SIGNAL(clicked()), SLOT(setHindernisse())); connect(ui->setSchub, SIGNAL(clicked()), SLOT(setRueckschub())); connect(ui->ultraschall, SIGNAL(stateChanged(int)), SLOT(setUltraschall())); //Handsteuerung connect(ui->Handsteuerung, SIGNAL(stateChanged(int)), SLOT(setHandsteuerung())); connect(ui->vor, SIGNAL(clicked()), SLOT(vor())); connect(ui->back, SIGNAL(clicked()), SLOT(back())); connect(ui->links, SIGNAL(clicked()), SLOT(links())); connect(ui->rechts, SIGNAL(clicked()), SLOT(rechts())); connect(ui->stop, SIGNAL(clicked()), SLOT(stop())); connect(ui->hoch, SIGNAL(clicked()), SLOT(hoch())); connect(ui->runter, SIGNAL(clicked()), SLOT(runter())); connect(ui->abwurf, SIGNAL(clicked()), SLOT(abwurf())); //ENDE Connectoren ------------------------------------------------------------------------------------------------ setup(); }