|
@@ -0,0 +1,76 @@
|
|
|
|
+#include "trafficlightpositiondialog.h"
|
|
|
|
+#include "ui_trafficlightpositiondialog.h"
|
|
|
|
+
|
|
|
|
+#include <QMessageBox>
|
|
|
|
+
|
|
|
|
+#include <gnss_coordinate_convert.h>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+TrafficLightpositionDialog::TrafficLightpositionDialog(Signal * pSignal,double lon0,double lat0,QWidget *parent) :
|
|
|
|
+ QDialog(parent),
|
|
|
|
+ ui(new Ui::TrafficLightpositionDialog)
|
|
|
|
+{
|
|
|
|
+ ui->setupUi(this);
|
|
|
|
+ mpSignal = pSignal;
|
|
|
|
+ mlon0 = lon0;
|
|
|
|
+ mlat0 = lat0;
|
|
|
|
+
|
|
|
|
+ signal_positionInertial * pSignal_positionInertial;
|
|
|
|
+ pSignal_positionInertial = mpSignal->GetpositionInertial();
|
|
|
|
+ if(pSignal_positionInertial != 0)
|
|
|
|
+ {
|
|
|
|
+ double x, y;
|
|
|
|
+ double x0,y0;
|
|
|
|
+ double lon,lat;
|
|
|
|
+ GaussProjCal(mlon0,mlat0,&x0,&y0);
|
|
|
|
+ x = pSignal_positionInertial->Getx();
|
|
|
|
+ y = pSignal_positionInertial->Gety();
|
|
|
|
+ GaussProjInvCal((x+x0),(y+y0),&lon,&lat);
|
|
|
|
+ double hdg = pSignal_positionInertial->Gethdg();
|
|
|
|
+ double head0 = (M_PI/2.0 - hdg)*180.0/M_PI;
|
|
|
|
+ if(head0<0)head0 = head0 + 360.0;
|
|
|
|
+ double z = pSignal_positionInertial->Getz();
|
|
|
|
+ double pitch = pSignal_positionInertial->Getpitch();
|
|
|
|
+ double roll = pSignal_positionInertial->Getroll();
|
|
|
|
+ ui->lineEdit_Lon->setText(QString::number(lon,'f',7));
|
|
|
|
+ ui->lineEdit_Lat->setText(QString::number(lat,'f',7));
|
|
|
|
+ ui->lineEdit_Height->setText(QString::number(z,'f',2));
|
|
|
|
+ ui->lineEdit_hdg->setText(QString::number(head0));
|
|
|
|
+ ui->lineEdit_pitch->setText(QString::number(pitch));
|
|
|
|
+ ui->lineEdit_roll->setText(QString::number(roll));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+TrafficLightpositionDialog::~TrafficLightpositionDialog()
|
|
|
|
+{
|
|
|
|
+ delete ui;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void TrafficLightpositionDialog::on_pushButton_Update_clicked()
|
|
|
|
+{
|
|
|
|
+ if(mpSignal == 0)return;
|
|
|
|
+ double lon,lat,z,head,pitch,roll;
|
|
|
|
+ if((ui->lineEdit_Lon->text().length() == 0)||(ui->lineEdit_Lat->text().length() == 0))
|
|
|
|
+ {
|
|
|
|
+ QMessageBox::warning(this,"warning","Value is Empty.");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ lon = ui->lineEdit_Lon->text().toDouble();
|
|
|
|
+ lat = ui->lineEdit_Lat->text().toDouble();
|
|
|
|
+ z = ui->lineEdit_Height->text().toDouble();
|
|
|
|
+ head = ui->lineEdit_hdg->text().toDouble();
|
|
|
|
+ pitch = ui->lineEdit_pitch->text().toDouble();
|
|
|
|
+ roll = ui->lineEdit_roll->text().toDouble();
|
|
|
|
+
|
|
|
|
+ double x, y;
|
|
|
|
+ double x0,y0;
|
|
|
|
+
|
|
|
|
+ GaussProjCal(mlon0,mlat0,&x0,&y0);
|
|
|
|
+ GaussProjCal(lon,lat,&x,&y);
|
|
|
|
+ double hdg = (90-head)*M_PI/180.0;
|
|
|
|
+ if(hdg<0)hdg = hdg +M_PI*2.0;
|
|
|
|
+ mpSignal->SetpositionInertial(x-x0,y-y0,z,hdg,pitch,roll);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|