so3为什么属于非欧空间
时间: 2023-05-25 15:06:24 浏览: 98
SO(3)是旋转群(特殊正交群)的符号,它由3维实数列向量构成。旋转可以看作是一个刚体在三维空间中的一系列移动,它不遵循欧几里德几何学中固有的平行公设,因此属于非欧几何空间。在非欧几何空间中,平行线可以相交,同时不同点之间的距离也可能不是唯一的。
相关问题
举个例子说明为什么SO3不满足平行公设
假设我们有两个平面A和B,它们之间的夹角为θ,我们想要将平面A通过旋转变换旋转到平面B。
如果SO3满足平行公设,那么我们只需要进行一次旋转就能够使得两个平面重合。但实际上,这并不总是成立。
假设我们分别选择了平面A和平面B上的两个点P1和P2作为旋转轴,以及一个夹角φ作为旋转角度。我们进行旋转变换得到的结果是平面A关于P1旋转φ角后得到的平面A'。同样地,平面B关于P2旋转φ角后得到的平面B'。如果这两个平面可以重合,那么我们必须有A'和B'在空间中重合,并且P1P2在这个平面上。
然而,这并不总是成立。例如,我们可以构造两个平面使得它们夹角为60度,但是无论我们如何选择旋转轴和旋转角度,我们都无法将它们旋转成重合的状态。
因此,SO3不满足平行公设。
sophus编译so3
Sophus是一个用于数值优化的C++库,特别是处理SE(3)旋转和平移变换。如果你想在C++中编译Sophus库中的SO3部分(代表三维空间的旋转),你需要遵循以下步骤:
1. **获取源码**:首先从Sophus的GitHub仓库下载最新版本的源代码:https://github.com/orocos/orocos_kinematics_dynamics
2. **配置**:进入下载的目录,通常有一个CMakeLists.txt文件,你可以打开它并配置你的构建系统,例如对于Linux和CMake,你可以设置构建选项,指定包含SO3的模块。
```sh
cmake -DCMAKE_BUILD_TYPE=Release -DSophus_USE_EIGEN3=ON ..
```
3. **构建**:然后运行`make`命令来编译库。如果你有其他依赖项(如Eigen或其他第三方库),记得先安装它们。
4. **安装**:如果需要将编译后的SO3库安装到系统路径,可以执行`make install`,这会将库复制到适当的目录。
5. **链接**:在你的项目中,当你引用Sophus的时候,记得链接SO3模块。比如在CMakeLists.txt中添加 `-lsophus` 或 `-lorocos::so3`。
```cmake
target_link_libraries(your_target_name ${Sophus_LIBRARIES})
```
阅读全文