Open mowatermelon opened 5 years ago
基础介绍
一般是指在三维空间
通过指定与三个旋转轴
相关联的三个角度
来最小参数化SO(3)
以表示任意方向
的方法。这是这个回答里最难看懂的一句话,也是最没用的一句话。
欧拉角
是用来表示三维坐标系
中方向
和方向变换
的。
要指出,我们平时说的欧拉角
其实还可以细分为欧拉角(Euler-angles)
和泰特布莱恩角(Tait-Bryan-angles)
,这两种方法都利用了笛卡尔坐标系
的三轴
作为旋转轴
,主要区别在于选取顺序
。
欧拉角
的选取顺序有(x, y, x), (x, z, x), (y, x, y), (y, z, y), (z, x, z), (z, y, z)
这6种,可见选取顺序是a,b,a
这样的顺序,也就是绕a轴
旋转某角度
后,绕新生成的b轴
旋转一个角度
,最后绕两次旋转以后的a轴
再旋转一个角度
,以此表示最终的方向。
泰特布莱恩角
的旋转轴选取有(x, y, z), (x, z, y), (y, x, z), (y, z, x), (z, x, y), (z, y, x)
这6种,也就是历遍笛卡尔坐标系
的三轴
,比如我们最常见到的Roll-Pitch-Yaw
角就是其中的情况。
但这两种方法,其实都是在空间中用最直观
的方式和最少的参数
表示任意方向
的通用方法
,用它们表示方向没有计算要求
和容量需求
的区别。
实际说明
图中演示的就是用 (z,x,z')
方法表示方向的过程。在此过程中,有如下图展示的 \alpha
,\beta
,\gamma
三个角,分别绕着原坐标z轴(蓝)
,一次旋转以后的x轴(绿)
以及两次旋转以后的z轴(红)
旋转,最终产生的红色坐标系
即表示出目标方向
当然,这是欧拉角``(z,x,z)
的情况,大家如果感兴趣,可以去画画看其他的欧拉角
和泰特布莱恩角
,也可以试着去推一推公式,我们可以看出,无论哪种表示方式,记录这样一个变换,至少需要三个角
的sine
和cosine
值,也就是一共存储6
个单位数据。
我们说过,用欧拉角
表示方向(或者说,方向变换)只需要用到三个参数
,即三个旋转角度
(因为坐标轴是旋转轴
,所以不用增加特别的参数描述旋转轴
),这样做有一个非常大的优点,就是表述清晰易懂
。
详细说明
Elm
是一种编译为JavaScript
的函数式语言
。它与React
等项目竞争,作为创建网站
和Web应用程序
的工具。Elm
非常注重简洁性,易用性和高质量的工具。
Elm
编程的基础知识。The Elm Architecture
制作交互式应用程序。Elm
中创建出色的Web应用程序
,还能了解使Elm
使用的核心思想和模式。没有JS库
的组合可以给你这个,但它在Elm
中都是免费的。现在这些好东西是唯一可能的,因为Elm
建立在类型化函数语言
上40多
年的工作之上。因此,Elm
是一种功能性语言
。
框架本身非常重视让
Elm
容易学习和使用,如果你处于前端学习困境
之中,如果你用Elm
实际制作一个项目,你最终会编写更好的JavaScript
和React
代码,我希望你会惊喜万分!
计数器。
一个基础的支持递增和递减计数器
import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
main =
Browser.sandbox { init = 0, update = update, view = view }
type Msg = Increment | Decrement
update msg model =
case msg of
Increment ->
model + 1
Decrement ->
model - 1
view model =
div []
[ button [ onClick Decrement ] [ text "-" ]
, div [] [ text (String.fromInt model) ]
, button [ onClick Increment ] [ text "+" ]
]
请注意,update
并且view
完全解耦。您以声明的方式描述HTML
,而Elm
负责处理DOM
。
git config
基础配置
配置比较工具
另外一个你可能需要配置的有用的选项是缺省的比较工具它用来解决合并时的冲突。例如,你想使用
vimdiff
Git
可以接受kdiff3
,tkdiff
,meld
,xxdiff
,emerge
,vimdiff
,gvimdiff
,ecmerge
, 和opendiff
作为有效的合并工具。你也可以设置一个客户化
的工具