Adding euler_angles class implementation 94/23194/1
authorRamasamy <ram.kannan@samsung.com>
Thu, 19 Jun 2014 10:01:58 +0000 (15:31 +0530)
committerRamasamy <ram.kannan@samsung.com>
Thu, 19 Jun 2014 10:02:10 +0000 (15:32 +0530)
  - Adding euler_angles template class
  - Adding implementation for the euler_angles template class
  - Adding euler_angles class testing code

signed-off-by: Ramasamy <ram.kannan@samsung.com>
Change-Id: Idd8498ce0decf89d0ae53cf2efa424013d692c86

src/sensor_fusion/standalone/util/euler_angles.cpp [new file with mode: 0644]
src/sensor_fusion/standalone/util/euler_angles.h [new file with mode: 0644]
src/sensor_fusion/standalone/util/test/euler_angles_test/.cproject [new file with mode: 0644]
src/sensor_fusion/standalone/util/test/euler_angles_test/.project [new file with mode: 0644]
src/sensor_fusion/standalone/util/test/euler_angles_test/euler_angles_main.cpp [new file with mode: 0644]

diff --git a/src/sensor_fusion/standalone/util/euler_angles.cpp b/src/sensor_fusion/standalone/util/euler_angles.cpp
new file mode 100644 (file)
index 0000000..00f9439
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * sensord
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#if defined (_EULER_ANGLES_H) && defined (_VECTOR_H)
+
+#include <math.h>
+
+#define EULER_SIZE 3
+#define RAD2DEG 57.2957795
+#define DEG2RAD 0.0174532925
+
+template <typename TYPE>
+euler_angles<TYPE>::euler_angles() : m_ang(EULER_SIZE)
+{
+}
+
+template <typename TYPE>
+euler_angles<TYPE>::euler_angles(const TYPE roll, const TYPE pitch, const TYPE yaw)
+{
+       TYPE euler_data[EULER_SIZE] = {roll, pitch, yaw};
+
+       vector<TYPE> v(EULER_SIZE, euler_data);
+       m_ang = v;
+}
+
+template <typename TYPE>
+euler_angles<TYPE>::euler_angles(const vector<TYPE> v)
+{
+       m_ang = v;
+}
+
+template <typename TYPE>
+euler_angles<TYPE>::euler_angles(const euler_angles<TYPE>& e)
+{
+       m_ang = e.m_ang;
+}
+
+template <typename TYPE>
+euler_angles<TYPE>::~euler_angles()
+{
+
+}
+
+template <typename TYPE>
+euler_angles<TYPE> euler_angles<TYPE>::operator =(const euler_angles<TYPE>& e)
+{
+       m_ang = e.m_ang;
+}
+
+template <typename T>
+euler_angles<T> quat2euler(const quaternion<T> q)
+{
+       T w, x, y, z;
+       T R11, R21, R31, R32, R33;
+       T phi, theta, psi;
+
+       w = q.m_quat.m_vec[0];
+       x = q.m_quat.m_vec[1];
+       y = q.m_quat.m_vec[2];
+       z = q.m_quat.m_vec[3];
+
+       R11 = 2 * (w * w) - 1 + 2 * (x * x);
+       R21 = 2 * ((x * y) - (w * z));
+       R31 = 2 * ((x * z) + (w * y));
+       R32 = 2 * ((y * z) - (w * x));
+       R33 = 2 * (w * w) - 1 + 2 * (z * z);
+
+       phi = atan2(R32, R33);
+       theta = -atan(R31 / sqrt(1 - (R31 * R31)));
+       psi = atan2(R21, R11);
+
+       euler_angles<T> e(phi, theta, psi);
+
+       return e;
+}
+
+template <typename T>
+euler_angles<T> rad2deg(const euler_angles<T> e)
+{
+       return (e.m_ang * (T) RAD2DEG);
+}
+
+template <typename T>
+euler_angles<T> deg2rad(const euler_angles<T> e)
+{
+       return (e.m_ang * (T) DEG2RAD);
+}
+
+#endif  //_EULER_ANGLES_H
diff --git a/src/sensor_fusion/standalone/util/euler_angles.h b/src/sensor_fusion/standalone/util/euler_angles.h
new file mode 100644 (file)
index 0000000..bafe8df
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * sensord
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _EULER_ANGLES_H
+#define _EULER_ANGLES_H
+
+#include "vector.h"
+#include "quaternion.h"
+
+template <typename TYPE>
+class euler_angles {
+public:
+       vector<TYPE> m_ang;
+
+       euler_angles();
+       euler_angles(const TYPE roll, const TYPE pitch, const TYPE yaw);
+       euler_angles(const vector<TYPE> v);
+       euler_angles(const euler_angles<TYPE>& e);
+       ~euler_angles();
+
+       euler_angles<TYPE> operator =(const euler_angles<TYPE>& e);
+
+       template<typename T> friend euler_angles<T> quat2euler(const quaternion<T> q);
+       template<typename T> friend euler_angles<T> rad2deg(const euler_angles<T> e);
+       template<typename T> friend euler_angles<T> deg2rad(const euler_angles<T> e);
+};
+
+#include "euler_angles.cpp"
+
+#endif  //_EULER_ANGLES_H
diff --git a/src/sensor_fusion/standalone/util/test/euler_angles_test/.cproject b/src/sensor_fusion/standalone/util/test/euler_angles_test/.cproject
new file mode 100644 (file)
index 0000000..7f29995
--- /dev/null
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+       <storageModule moduleId="org.eclipse.cdt.core.settings">
+               <cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.2124026725">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.2124026725" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.2124026725" name="Debug" parent="cdt.managedbuild.config.gnu.exe.debug">
+                                       <folderInfo id="cdt.managedbuild.config.gnu.exe.debug.2124026725." name="/" resourcePath="">
+                                               <toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1237933077" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
+                                                       <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.10918119" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
+                                                       <builder buildPath="${workspace_loc:/euler_angles_test/Debug}" id="cdt.managedbuild.target.gnu.builder.exe.debug.1276482469" managedBuildOn="true" name="Gnu Make Builder.Debug" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.archiver.base.1768844760" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1926062852" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
+                                                               <option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1824847321" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+                                                               <option id="gnu.cpp.compiler.exe.debug.option.debugging.level.652889800" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2026037240" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.478104514" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
+                                                               <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.870751935" superClass="gnu.c.compiler.exe.debug.option.optimization.level" valueType="enumerated"/>
+                                                               <option id="gnu.c.compiler.exe.debug.option.debugging.level.163523358" superClass="gnu.c.compiler.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.842660092" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.926413604" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.460832624" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1274539780" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.41680223" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.348917740" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                               </toolChain>
+                                       </folderInfo>
+                               </configuration>
+                       </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+               </cconfiguration>
+               <cconfiguration id="cdt.managedbuild.config.gnu.exe.release.1034128535">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.1034128535" moduleId="org.eclipse.cdt.core.settings" name="Release">
+                               <externalSettings/>
+                               <extensions>
+                                       <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+                                       <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                                       <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+                               </extensions>
+                       </storageModule>
+                       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+                               <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.1034128535" name="Release" parent="cdt.managedbuild.config.gnu.exe.release">
+                                       <folderInfo id="cdt.managedbuild.config.gnu.exe.release.1034128535." name="/" resourcePath="">
+                                               <toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.1726822497" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
+                                                       <targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.301719549" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
+                                                       <builder buildPath="${workspace_loc:/euler_angles_test/Release}" id="cdt.managedbuild.target.gnu.builder.exe.release.931635129" managedBuildOn="true" name="Gnu Make Builder.Release" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.archiver.base.206631273" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.404742687" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
+                                                               <option id="gnu.cpp.compiler.exe.release.option.optimization.level.1868367757" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+                                                               <option id="gnu.cpp.compiler.exe.release.option.debugging.level.1468712393" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1391312305" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.2026412472" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
+                                                               <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.1735245143" superClass="gnu.c.compiler.exe.release.option.optimization.level" valueType="enumerated"/>
+                                                               <option id="gnu.c.compiler.exe.release.option.debugging.level.1226412515" superClass="gnu.c.compiler.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1829077992" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.237899673" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
+                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.432749818" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.116230737" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+                                                                       <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+                                                                       <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+                                                               </inputType>
+                                                       </tool>
+                                                       <tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.160108826" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
+                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.113666610" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+                                                       </tool>
+                                               </toolChain>
+                                       </folderInfo>
+                               </configuration>
+                       </storageModule>
+               </cconfiguration>
+       </storageModule>
+       <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+               <project id="euler_angles_test.cdt.managedbuild.target.gnu.exe.2021720407" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
+       </storageModule>
+       <storageModule moduleId="scannerConfiguration">
+               <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2124026725;cdt.managedbuild.config.gnu.exe.debug.2124026725.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.478104514;cdt.managedbuild.tool.gnu.c.compiler.input.842660092">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1034128535;cdt.managedbuild.config.gnu.exe.release.1034128535.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.404742687;cdt.managedbuild.tool.gnu.cpp.compiler.input.1391312305">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.1034128535;cdt.managedbuild.config.gnu.exe.release.1034128535.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.2026412472;cdt.managedbuild.tool.gnu.c.compiler.input.1829077992">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2124026725;cdt.managedbuild.config.gnu.exe.debug.2124026725.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1926062852;cdt.managedbuild.tool.gnu.cpp.compiler.input.2026037240">
+                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+               </scannerConfigBuildInfo>
+       </storageModule>
+</cproject>
diff --git a/src/sensor_fusion/standalone/util/test/euler_angles_test/.project b/src/sensor_fusion/standalone/util/test/euler_angles_test/.project
new file mode 100644 (file)
index 0000000..eca2f5e
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>euler_angles_test</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+                       <triggers>clean,full,incremental,</triggers>
+                       <arguments>
+                               <dictionary>
+                                       <key>?name?</key>
+                                       <value></value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.append_environment</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+                                       <value>all</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.buildArguments</key>
+                                       <value></value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.buildCommand</key>
+                                       <value>make</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.buildLocation</key>
+                                       <value>${workspace_loc:/euler_angles_test/Debug}</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+                                       <value>clean</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.contents</key>
+                                       <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+                                       <value>false</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+                                       <value>all</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.stopOnError</key>
+                                       <value>true</value>
+                               </dictionary>
+                               <dictionary>
+                                       <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+                                       <value>true</value>
+                               </dictionary>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+                       <triggers>full,incremental,</triggers>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.tizen.nativecpp.apichecker.core.builder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.cdt.core.cnature</nature>
+               <nature>org.eclipse.cdt.core.ccnature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+               <nature>org.tizen.nativecpp.apichecker.core.tizenCppNature</nature>
+       </natures>
+</projectDescription>
diff --git a/src/sensor_fusion/standalone/util/test/euler_angles_test/euler_angles_main.cpp b/src/sensor_fusion/standalone/util/test/euler_angles_test/euler_angles_main.cpp
new file mode 100644 (file)
index 0000000..592e782
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * sensord
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "../../euler_angles.h"
+
+int main()
+{
+       float arr0[3] = {234.98, 345.24, -56.12};
+       float arr1[3] = {56, -34, 76};
+       float arr2[4] = {0.6, 0.6, -.18, -.44};
+       float arr3[4] = {-0.5, -0.36, .43, .03};
+
+       vector<float> v0(3, arr0);
+       vector<float> v1(3, arr1);
+       vector<float> v2(4, arr2);
+       vector<float> v3(4, arr3);
+
+       quaternion<float> q1(v2);
+       quaternion<float> q2(v3);
+
+       euler_angles<float> e0(v0);
+       euler_angles<float> e1(v1);
+       euler_angles<float> e2((float)234.98, (float)345.24, (float)-56.12);
+       euler_angles<float> e3(e1);
+       euler_angles<float> e4;
+
+       cout << "Constructor tests\n";
+       cout << "input\t" << v0 << "\n";
+       cout << "output\t" << e0.m_ang << "\n\n";
+       cout << "input\t" << v1 << "\n";
+       cout << "output\t" << e1.m_ang << "\n\n";
+       cout << "input\t" << v0 << "\n";
+       cout << "output\t" << e2.m_ang << "\n\n";
+       cout << "input\t" << v1 << "\n";
+       cout << "output\t" << e3.m_ang << "\n\n";
+       cout << "default constructor\n";
+       cout << "output\t" << e4.m_ang << "\n\n";
+
+       cout << "Quaternion to Euler\n";
+       euler_angles<float> e5 = quat2euler(q1);
+       cout << "input\t" << q1.m_quat << "\n";
+       cout << "output\t" << e5.m_ang << "\n\n";
+       euler_angles<float> e8 = quat2euler(q2);
+       cout << "input\t" << q2.m_quat << "\n";
+       cout << "output\t" << e8.m_ang << "\n\n";
+
+       cout << "Radians to Degrees\n";
+       euler_angles<float> e6 = deg2rad(e0);
+       cout << "input\t" << e0.m_ang << "\n";
+       cout << "output\t" << e6.m_ang << "\n\n";
+
+       cout << "Degrees to Radians\n";
+       euler_angles<float> e7 = rad2deg(e6);
+       cout << "input\t" << e6.m_ang << "\n";
+       cout << "output\t" << e7.m_ang << "\n\n";
+}
+