#include "geotogk.h" #include "ui_geotogk.h" GEOtoGK::GEOtoGK(QWidget *parent) : QDialog(parent), ui(new Ui::GEOtoGK) { ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); ((Widget*)parent)->changeOpenWidget(this); } GEOtoGK::~GEOtoGK() { delete ui; } void GEOtoGK::closeEvent(QCloseEvent *event) { ((Widget*)parent())->clearOpenWidget(); event->accept(); } void GEOtoGK::on_pushButton_2_clicked() { close(); } void GEOtoGK::on_pushButton_clicked() { int nZone, b1, b2, b3, l1, l2, l3; bool south; int XL, YL; double CA2=5333.5419; double CA4=4.84339; double CA6=0.007622; double A1,A2,A3,B1,B2,B3,C1,C2,C3,D1,D2,D3, E,EL,FI,L0,TGE,THP,P; nZone = ui->lineEdit->text().toInt(); south = ui->checkBox->isChecked(); b1 = ui->lineEdit_2->text().toInt(); b2 = ui->lineEdit_3->text().toInt(); b3 = ui->lineEdit_4->text().toInt(); l1 = ui->lineEdit_5->text().toInt(); l2 = ui->lineEdit_6->text().toInt(); l3 = ui->lineEdit_7->text().toInt(); // расчет B = (((b3/60)+b2) /60 + b1)/180*M_PI; if (south) B=-B; L = (((l3/60)+l2)/60+l1)/180*M_PI; L0=double(nZone)*6.0-3.0; L0=L0*M_PI/180.0; EL=L-L0; FI=(2624.0*sin(B)*sin(B)+372834.0)*sin(B)*sin(B); FI=B-((FI+66934216.0)*sin(B)*cos(B)*0.0000000001); TGE=tan(FI)/cos(EL); E=atan(TGE); THP=cos(FI)*sin(EL); P=0.5*log((1.0+THP)/(1.0-THP)); A1=sin(2.0*E); B1=cos(2.0*E); C1=sinh(2.0*P); D1=cosh(2.0*P); A2=2.0*A1*B1; B2=1.0-2.0*A1*A1; C2=2.0*C1*D1; D2=1.0+2.0*C1*C1; A3=A1*B2+A2*B1; B3=B1*B2-A1*A2; C3=C1*D2+C2*D1; D3=D1*D2+C1*C2; XL = 6367558.497*E+CA2*A1*D1+CA4*A2*D2+CA6*A3*D3; if (XL<0) XL=-XL; YL = 6367558.497*P+CA2*B1*C1+CA4*B2*C2+CA6*B3*C3 + 500000.0; ui->lineEdit_8->setText(QString::number(XL)); ui->lineEdit_9->setText(QString::number(YL)); }