27 #include <QDoubleValidator>
30 #include <Eigen/Dense>
38 std::vector<QLineEdit*> edits{
39 widget.lineEdit00, widget.lineEdit01, widget.lineEdit02,
40 widget.lineEdit03, widget.lineEdit10, widget.lineEdit11,
41 widget.lineEdit12, widget.lineEdit13, widget.lineEdit20,
42 widget.lineEdit21, widget.lineEdit22, widget.lineEdit23,
43 widget.lineEdit30, widget.lineEdit31, widget.lineEdit32,
46 widget.lineEditI00, widget.lineEditI01, widget.lineEditI02,
47 widget.lineEditI03, widget.lineEditI10, widget.lineEditI11,
48 widget.lineEditI12, widget.lineEditI13, widget.lineEditI20,
49 widget.lineEditI21, widget.lineEditI22, widget.lineEditI23,
50 widget.lineEditI30, widget.lineEditI31, widget.lineEditI32,
53 widget.lineEditICheck00, widget.lineEditICheck01, widget.lineEditICheck02,
54 widget.lineEditICheck03, widget.lineEditICheck10, widget.lineEditICheck11,
55 widget.lineEditICheck12, widget.lineEditICheck13, widget.lineEditICheck20,
56 widget.lineEditICheck21, widget.lineEditICheck22, widget.lineEditICheck23,
57 widget.lineEditICheck30, widget.lineEditICheck31, widget.lineEditICheck32,
58 widget.lineEditICheck33,
60 widget.lineEditX, widget.lineEditY, widget.lineEditZ,
61 widget.lineEditRX, widget.lineEditRY, widget.lineEditRZ,
63 widget.lineEditM00, widget.lineEditM01, widget.lineEditM02,
64 widget.lineEditM03, widget.lineEditM10, widget.lineEditM11,
65 widget.lineEditM12, widget.lineEditM13, widget.lineEditM20,
66 widget.lineEditM21, widget.lineEditM22, widget.lineEditM23,
67 widget.lineEditM30, widget.lineEditM31, widget.lineEditM32,
70 widget.lineEditR00, widget.lineEditR01, widget.lineEditR02,
71 widget.lineEditR03, widget.lineEditR10, widget.lineEditR11,
72 widget.lineEditR12, widget.lineEditR13, widget.lineEditR20,
73 widget.lineEditR21, widget.lineEditR22, widget.lineEditR23,
74 widget.lineEditR30, widget.lineEditR31, widget.lineEditR32,
78 for (
auto edit : edits)
80 edit->setValidator(
new QDoubleValidator(
this));
81 edit->setFixedWidth(100);
82 edit->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
84 connect(widget.lineEdit00, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
85 connect(widget.lineEdit01, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
86 connect(widget.lineEdit02, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
87 connect(widget.lineEdit10, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
88 connect(widget.lineEdit11, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
89 connect(widget.lineEdit12, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
90 connect(widget.lineEdit20, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
91 connect(widget.lineEdit21, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
92 connect(widget.lineEdit22, SIGNAL(textEdited(QString)),
this, SLOT(changed4f()));
94 connect(widget.lineEditRX, SIGNAL(textEdited(QString)),
this, SLOT(changedrpy()));
95 connect(widget.lineEditRY, SIGNAL(textEdited(QString)),
this, SLOT(changedrpy()));
96 connect(widget.lineEditRZ, SIGNAL(textEdited(QString)),
this, SLOT(changedrpy()));
98 connect(widget.lineEditM00, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
99 connect(widget.lineEditM01, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
100 connect(widget.lineEditM02, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
101 connect(widget.lineEditM03, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
102 connect(widget.lineEditM10, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
103 connect(widget.lineEditM11, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
104 connect(widget.lineEditM12, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
105 connect(widget.lineEditM13, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
106 connect(widget.lineEditM20, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
107 connect(widget.lineEditM21, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
108 connect(widget.lineEditM22, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
109 connect(widget.lineEditM23, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
110 connect(widget.lineEditM30, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
111 connect(widget.lineEditM31, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
112 connect(widget.lineEditM32, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
113 connect(widget.lineEditM33, SIGNAL(textEdited(QString)),
this, SLOT(recalcProd()));
115 connect(widget.lineEdit03, SIGNAL(textChanged(QString)),
this, SLOT(recalcInvAndProd()));
116 connect(widget.lineEdit13, SIGNAL(textChanged(QString)),
this, SLOT(recalcInvAndProd()));
117 connect(widget.lineEdit23, SIGNAL(textChanged(QString)),
this, SLOT(recalcInvAndProd()));
147 m << widget.lineEdit00->text().toDouble(), widget.lineEdit01->text().toDouble(),
148 widget.lineEdit02->text().toDouble(), widget.lineEdit03->text().toDouble(),
149 widget.lineEdit10->text().toDouble(), widget.lineEdit11->text().toDouble(),
150 widget.lineEdit12->text().toDouble(), widget.lineEdit13->text().toDouble(),
151 widget.lineEdit20->text().toDouble(), widget.lineEdit21->text().toDouble(),
152 widget.lineEdit22->text().toDouble(), widget.lineEdit23->text().toDouble(),
153 widget.lineEdit30->text().toDouble(), widget.lineEdit31->text().toDouble(),
154 widget.lineEdit32->text().toDouble(), widget.lineEdit33->text().toDouble();
159 armarx::HomogeneousMatrixCalculatorWidgetController::changed4f()
161 Eigen::Matrix4d m = getMatrix();
162 Eigen::Vector3f rpy = VirtualRobot::MathTools::eigen4f2rpy(m.cast<
float>());
163 widget.lineEditRX->setText(QString::number(rpy(0)));
164 widget.lineEditRY->setText(QString::number(rpy(1)));
165 widget.lineEditRZ->setText(QString::number(rpy(2)));
170 armarx::HomogeneousMatrixCalculatorWidgetController::changedrpy()
172 float r =
static_cast<float>(widget.lineEditRX->text().toDouble());
173 float p =
static_cast<float>(widget.lineEditRY->text().toDouble());
174 float y =
static_cast<float>(widget.lineEditRZ->text().toDouble());
176 widget.lineEdit00->setText(QString::number(m(0, 0)));
177 widget.lineEdit01->setText(QString::number(m(0, 1)));
178 widget.lineEdit02->setText(QString::number(m(0, 2)));
179 widget.lineEdit10->setText(QString::number(m(1, 0)));
180 widget.lineEdit11->setText(QString::number(m(1, 1)));
181 widget.lineEdit12->setText(QString::number(m(1, 2)));
182 widget.lineEdit20->setText(QString::number(m(2, 0)));
183 widget.lineEdit21->setText(QString::number(m(2, 1)));
184 widget.lineEdit22->setText(QString::number(m(2, 2)));
189 HomogeneousMatrixCalculatorWidgetController::recalcInv()
192 Eigen::Matrix4d m = om.inverse();
193 widget.lineEditI00->setText(QString::number(m(0, 0)));
194 widget.lineEditI01->setText(QString::number(m(0, 1)));
195 widget.lineEditI02->setText(QString::number(m(0, 2)));
196 widget.lineEditI03->setText(QString::number(m(0, 3)));
197 widget.lineEditI10->setText(QString::number(m(1, 0)));
198 widget.lineEditI11->setText(QString::number(m(1, 1)));
199 widget.lineEditI12->setText(QString::number(m(1, 2)));
200 widget.lineEditI13->setText(QString::number(m(1, 3)));
201 widget.lineEditI20->setText(QString::number(m(2, 0)));
202 widget.lineEditI21->setText(QString::number(m(2, 1)));
203 widget.lineEditI22->setText(QString::number(m(2, 2)));
204 widget.lineEditI23->setText(QString::number(m(2, 3)));
205 widget.lineEditI30->setText(QString::number(m(3, 0)));
206 widget.lineEditI31->setText(QString::number(m(3, 1)));
207 widget.lineEditI32->setText(QString::number(m(3, 2)));
208 widget.lineEditI33->setText(QString::number(m(3, 3)));
209 Eigen::Matrix4d check = om * m;
210 widget.lineEditICheck00->setText(QString::number(check(0, 0)));
211 widget.lineEditICheck01->setText(QString::number(check(0, 1)));
212 widget.lineEditICheck02->setText(QString::number(check(0, 2)));
213 widget.lineEditICheck03->setText(QString::number(check(0, 3)));
214 widget.lineEditICheck10->setText(QString::number(check(1, 0)));
215 widget.lineEditICheck11->setText(QString::number(check(1, 1)));
216 widget.lineEditICheck12->setText(QString::number(check(1, 2)));
217 widget.lineEditICheck13->setText(QString::number(check(1, 3)));
218 widget.lineEditICheck20->setText(QString::number(check(2, 0)));
219 widget.lineEditICheck21->setText(QString::number(check(2, 1)));
220 widget.lineEditICheck22->setText(QString::number(check(2, 2)));
221 widget.lineEditICheck23->setText(QString::number(check(2, 3)));
222 widget.lineEditICheck30->setText(QString::number(check(3, 0)));
223 widget.lineEditICheck31->setText(QString::number(check(3, 1)));
224 widget.lineEditICheck32->setText(QString::number(check(3, 2)));
225 widget.lineEditICheck33->setText(QString::number(check(3, 3)));
229 HomogeneousMatrixCalculatorWidgetController::recalcProd()
232 m << widget.lineEditM00->text().toDouble(), widget.lineEditM01->text().toDouble(),
233 widget.lineEditM02->text().toDouble(), widget.lineEditM03->text().toDouble(),
234 widget.lineEditM10->text().toDouble(), widget.lineEditM11->text().toDouble(),
235 widget.lineEditM12->text().toDouble(), widget.lineEditM13->text().toDouble(),
236 widget.lineEditM20->text().toDouble(), widget.lineEditM21->text().toDouble(),
237 widget.lineEditM22->text().toDouble(), widget.lineEditM23->text().toDouble(),
238 widget.lineEditM30->text().toDouble(), widget.lineEditM31->text().toDouble(),
239 widget.lineEditM32->text().toDouble(), widget.lineEditM33->text().toDouble();
241 widget.lineEditR00->setText(QString::number(r(0, 0)));
242 widget.lineEditR01->setText(QString::number(r(0, 1)));
243 widget.lineEditR02->setText(QString::number(r(0, 2)));
244 widget.lineEditR03->setText(QString::number(r(0, 3)));
245 widget.lineEditR10->setText(QString::number(r(1, 0)));
246 widget.lineEditR11->setText(QString::number(r(1, 1)));
247 widget.lineEditR12->setText(QString::number(r(1, 2)));
248 widget.lineEditR13->setText(QString::number(r(1, 3)));
249 widget.lineEditR20->setText(QString::number(r(2, 0)));
250 widget.lineEditR21->setText(QString::number(r(2, 1)));
251 widget.lineEditR22->setText(QString::number(r(2, 2)));
252 widget.lineEditR23->setText(QString::number(r(2, 3)));
253 widget.lineEditR30->setText(QString::number(r(3, 0)));
254 widget.lineEditR31->setText(QString::number(r(3, 1)));
255 widget.lineEditR32->setText(QString::number(r(3, 2)));
256 widget.lineEditR33->setText(QString::number(r(3, 3)));
260 HomogeneousMatrixCalculatorWidgetController::recalcInvAndProd()