EulerWidget.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016, Bielefeld University, CITEC
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  *
29  * Author: Robert Haschke <rhaschke@techfak.uni-bielefeld.de>
30  */
31 
32 #pragma once
33 
34 #include <QWidget>
35 #include <Eigen/Geometry>
36 
37 namespace Ui {
38 class EulerWidget;
39 }
40 
41 class EulerWidget : public QWidget
42 {
43  Q_OBJECT
44 public:
45  enum Axis { X = 0, Y = 1, Z = 2 };
46 
47  explicit EulerWidget(QWidget* parent = nullptr);
48 
49  const Eigen::Quaterniond& value() const;
50 
52  void getGuiAxes(uint a[3]) const;
54  void getGuiAngles(double e[]) const;
55 
56 signals:
58  void valueChanged(const Eigen::Quaterniond& q);
60  void axesChanged(uint a1, uint a2, uint a3);
61 
62 public slots:
63  void setValue(const Eigen::Quaterniond& q);
64  void setEulerAngles(double e1, double e2, double e3, bool normalize);
65  void setEulerAxes(uint a1, uint a2, uint a3);
66 
67 protected slots:
68  void axisChanged(int axis);
69  void angleChanged(double angle);
70 
71 private slots:
72  void updateAngles();
73 
74 private:
75  Eigen::Quaterniond q_;
76  Ui::EulerWidget* ui_;
77 };
TFSIMD_FORCE_INLINE void setValue(const tfScalar &x, const tfScalar &y, const tfScalar &z)
Definition: EulerWidget.h:37
Ui::EulerWidget * ui_
Definition: EulerWidget.h:76
TFSIMD_FORCE_INLINE Vector3 & normalize()
Eigen::Quaterniond q_
Definition: EulerWidget.h:75


agni_tf_tools
Author(s): Robert Haschke
autogenerated on Tue Apr 13 2021 02:29:55