mowatermelon / studyNode

Learning record
MIT License
4 stars 1 forks source link

2019/01/15 #251

Open mowatermelon opened 5 years ago

mowatermelon commented 5 years ago

git config

基础配置

$ git config --global user.name "melonHero"  
$ git config --global user.email neefoxmo@gmail.com  

$ git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
http.sslcainfo=D:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
credential.helper=manager
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
user.name=melonHero
user.email=neefoxmo@gmail.com

配置比较工具

另外一个你可能需要配置的有用的选项是缺省的比较工具它用来解决合并时的冲突。例如,你想使用vimdiff

$ git config --global merge.tool vimdiff 

Git可以接受kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, 和 opendiff作为有效的合并工具。你也可以设置一个客户化的工具

mowatermelon commented 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)的情况,大家如果感兴趣,可以去画画看其他的欧拉角泰特布莱恩角,也可以试着去推一推公式,我们可以看出,无论哪种表示方式,记录这样一个变换,至少需要三个角sinecosine值,也就是一共存储6个单位数据。

我们说过,用欧拉角表示方向(或者说,方向变换)只需要用到三个参数,即三个旋转角度(因为坐标轴是旋转轴,所以不用增加特别的参数描述旋转轴),这样做有一个非常大的优点,就是表述清晰易懂

详细说明

如何通俗地解释欧拉角?之后为何要引入四元数?

mowatermelon commented 5 years ago

Elm

Elm简介

Elm是一种编译为JavaScript函数式语言。它与React等项目竞争,作为创建网站Web应用程序的工具。Elm非常注重简洁性,易用性和高质量的工具。

官网

https://elm-lang.org/

office website

官方文档

https://guide.elm-lang.org/

Elm office docs

没有JS库的组合可以给你这个,但它在Elm中都是免费的。现在这些好东西是唯一可能的,因为Elm建立在类型化函数语言40多年的工作之上。因此,Elm是一种功能性语言

框架本身非常重视让Elm容易学习和使用,如果你处于前端学习困境之中,如果你用Elm实际制作一个项目,你最终会编写更好的JavaScriptReact代码,我希望你会惊喜万分!

官方辅助网站

package.elm-lang

elm-search

blog

design-guidelines

案例

计数器。

一个基础的支持递增和递减计数器

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