-# for mac zsh
-alias ls='ls -G'
-alias ll='ls -l -G'
+# If you come from bash you might have to change your $PATH.
+# export PATH=$HOME/bin:/usr/local/bin:$PATH
+
+# Path to your oh-my-zsh installation.
+export ZSH="/Users/ace/.oh-my-zsh"
+
+# Set name of the theme to load --- if set to "random", it will
+# load a random theme each time oh-my-zsh is loaded, in which case,
+# to know which specific one was loaded, run: echo $RANDOM_THEME
+# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
+#ZSH_THEME="robbyrussell"
+
+# 需要安装字体: https://github.com/powerline/fonts.git
+# 字体安装之后,需要将终端的字体设置为‘Roboto Mono for Powerline
+ZSH_THEME="agnoster"
+
+# Set list of themes to pick from when loading at random
+# Setting this variable when ZSH_THEME=random will cause zsh to load
+# a theme from this variable instead of looking in ~/.oh-my-zsh/themes/
+# If set to an empty array, this variable will have no effect.
+# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
+
+# Uncomment the following line to use case-sensitive completion.
+# CASE_SENSITIVE="true"
+
+# Uncomment the following line to use hyphen-insensitive completion.
+# Case-sensitive completion must be off. _ and - will be interchangeable.
+# HYPHEN_INSENSITIVE="true"
+
+# Uncomment the following line to disable bi-weekly auto-update checks.
+# DISABLE_AUTO_UPDATE="true"
+
+# Uncomment the following line to automatically update without prompting.
+# DISABLE_UPDATE_PROMPT="true"
+
+# Uncomment the following line to change how often to auto-update (in days).
+# export UPDATE_ZSH_DAYS=13
+
+# Uncomment the following line if pasting URLs and other text is messed up.
+# DISABLE_MAGIC_FUNCTIONS=true
+
+# Uncomment the following line to disable colors in ls.
+# DISABLE_LS_COLORS="true"
+
+# Uncomment the following line to disable auto-setting terminal title.
+# DISABLE_AUTO_TITLE="true"
+
+# Uncomment the following line to enable command auto-correction.
+# ENABLE_CORRECTION="true"
+
+# Uncomment the following line to display red dots whilst waiting for completion.
+# COMPLETION_WAITING_DOTS="true"
+
+# Uncomment the following line if you want to disable marking untracked files
+# under VCS as dirty. This makes repository status check for large repositories
+# much, much faster.
+# DISABLE_UNTRACKED_FILES_DIRTY="true"
+
+# Uncomment the following line if you want to change the command execution time
+# stamp shown in the history command output.
+# You can set one of the optional three formats:
+# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
+# or set a custom format using the strftime function format specifications,
+# see 'man strftime' for details.
+# HIST_STAMPS="mm/dd/yyyy"
+
+# Would you like to use another custom folder than $ZSH/custom?
+# ZSH_CUSTOM=/path/to/new-custom-folder
+
+# Which plugins would you like to load?
+# Standard plugins can be found in ~/.oh-my-zsh/plugins/*
+# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
+# Example format: plugins=(rails git textmate ruby lighthouse)
+# Add wisely, as too many plugins slow down shell startup.
+# 自动补全插件: https://mimosa-pudica.net/src/incr-0.2.zsh
+# 将incr-0.2.zsh保存到~/.oh-my-zsh/custom/plugins/incr/并重命名为incr.plugin.zsh
+plugins=(
+ git
+ incr
+)
+
+source $ZSH/oh-my-zsh.sh
+
+# User configuration
+
+# export MANPATH="/usr/local/man:$MANPATH"
+
+# You may need to manually set your language environment
+# export LANG=en_US.UTF-8
+
+# Preferred editor for local and remote sessions
+# if [[ -n $SSH_CONNECTION ]]; then
+# export EDITOR='vim'
+# else
+# export EDITOR='mvim'
+# fi
+
+# Compilation flags
+# export ARCHFLAGS="-arch x86_64"
+
+# Set personal aliases, overriding those provided by oh-my-zsh libs,
+# plugins, and themes. Aliases can be placed here, though oh-my-zsh
+# users are encouraged to define aliases within the ZSH_CUSTOM folder.
+# For a full list of active aliases, run `alias`.
+#
+# Example aliases
+# alias zshconfig="mate ~/.zshrc"
+# alias ohmyzsh="mate ~/.oh-my-zsh"
+
+export PATH=/usr/local/sbin:$PATH
+export PATH=$HOME/.local/bin:$PATH
+export PATH=$PATH:$HOME/workspace/esp/xtensa-esp32-elf/bin
+export PATH=$PATH:$HOME/workspace/esp/xtensa-lx106-elf/bin
+export IDF_PATH=$HOME/workspace/esp/esp-idf
+#export IDF_PATH=$HOME/workspace/esp/ESP8266_RTOS_SDK
+export PATH=$PATH:/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/
+export PATH=$PATH:$HOME/Library/Arduino15/packages/arduino/tools/avrdude/6.0.1-arduino5/bin
+export PATH=$PATH:/usr/local/opt/go/libexec/bin
+export PATH=$PATH:/Users/ace/sys/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.2-20190521-0004/bin
+#多个GOPATH用';'分隔 go get会存到第一个目录
+export GOPATH=$HOME/workspace/go:$HOME/workspace/web/qossvr/
+export RTOS_PATH=$HOME/workspace/acecode/rtos/
+
+export PATH=/usr/local/sbin:$PATH
+export PATH=$HOME/.local/bin:$PATH
+export PATH=$PATH:$HOME/workspace/esp/xtensa-esp32-elf/bin
+export PATH=$PATH:$HOME/workspace/esp/xtensa-lx106-elf/bin
+#export IDF_PATH=$HOME/workspace/esp/esp-idf
+export IDF_PATH=$HOME/workspace/esp/ESP8266_RTOS_SDK
+export PATH=$PATH:/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/
+export PATH=$PATH:$HOME/Library/Arduino15/packages/arduino/tools/avrdude/6.0.1-arduino5/bin
+export PATH=$PATH:/usr/local/opt/go/libexec/bin
+export PATH=$PATH:/Users/ace/sys/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.2-20190521-0004/bin
+#多个GOPATH用';'分隔 go get会存到第一个目录
+export GOPATH=$HOME/workspace/go:$HOME/workspace/web/qossvr/
+export RTOS_PATH=$HOME/workspace/acecode/rtos/
* ------------------------------------------------------------------------
*/
package main
+
import (
"fmt"
"math"
)
type AstronomicalObject struct {
- name string
- parent string
- radius float64 // 天体半径
- sma float64 // Semi-major axis 轨道半长轴
- inclination float64 // 轨道倾角
- eccentricity float64 // 轨道偏心率,没有使用
- u float64 // 标准重力参数 u = GM, F=(G*M*m)/(r^2)
- soi float64 // Sphere of influence 势国作用范围
+ name string
+ parent string
+ radius float64 // 天体半径
+ sma float64 // Semi-major axis 轨道半长轴
+ inclination float64 // 轨道倾角
+ eccentricity float64 // 轨道偏心率,没有使用
+ u float64 // 标准重力参数 u = GM, F=(G*M*m)/(r^2)
+ soi float64 // Sphere of influence 势国作用范围
}
-var objects = map[string]AstronomicalObject {
- "Kerbol" : {
+var objects = map[string]AstronomicalObject{
+ "Kerbol": {
"Kerbol",
"",
261600000,
0,
0,
1.1723328e18,
- math.MaxFloat64, // 应该是infinity
+ math.MaxFloat64, // 应该是infinity
+ },
+ "Eve": {
+ "Eve",
+ "Kerbol",
+ 700000,
+ 9832684544,
+ 2.1,
+ 0.01,
+ 8.1717302E12,
+ 85109365,
},
- "Eve" :
- {
- "Eve",
- "Kerbol",
- 700000,
- 9832684544,
- 2.1,
- 0.01,
- 8.1717302E12,
- 85109365,
- },
- "Duna" :
- {
+ "Duna": {
"Duna",
"Kerbol",
320000,
3.0136321e11,
47921949,
},
- "Kerbin" :
- {
+ "Kerbin": {
"Kerbin",
"Kerbol",
600000,
3.5315984e12,
84159271,
},
- "Dress" :
- {
- "Dress",
- "Kerbol",
- 138000,
- 40839348203,
- 5,
- 0.145,
- 2.1484489e10,
- 32832840,
- },
+ "Dress": {
+ "Dress",
+ "Kerbol",
+ 138000,
+ 40839348203,
+ 5,
+ 0.145,
+ 2.1484489e10,
+ 32832840,
+ },
}
func getAstronomicalObjectOrbitalPeriod(sma float64, u float64) float64 {
- return 2*math.Pi*math.Sqrt(math.Pow(sma, 3) / u)
+ return 2 * math.Pi * math.Sqrt(math.Pow(sma, 3)/u)
}
func main() {
defer fmt.Println("Program Exited...")
-
// 轨道周期的计算公式为 T=2*Pi*sqrt(sma^3/u)
// 设源和目标轨道半轴长分别为Rs, Rd
// 则转移轨道周期为 Tt = 2*Pi*sqrt(((Rs+Rd)/2)^3/u)
// 则有 t*Wt = Pi ===> t = Tt*Pi
// 则有 Wd*t + PhaseAngle = Pi (即经过t时间目标+相位角=霍曼转移经过Pi弧度后会合)
// ===> (1/Td)*Tt*Pi + PhaseAngle = Pi
- // ===> PhaseAngle = Pi - Tt*Pi/Td
+ // ===> PhaseAngle = Pi - Tt*Pi/Td
aos := objects["Kerbin"]
aod := objects["Duna"]
if aos.parent != aod.parent || aos.parent == "" || aod.parent == "" {
- fmt.Println("invalid astronomical object");
+ fmt.Println("invalid astronomical object")
return
}
PhaseAngle := math.Pi - Tt*math.Pi/Td
fmt.Printf("%.6f %.6f\n", Ts, Td)
- fmt.Printf("phase angle %.2f°\n", PhaseAngle*180/math.Pi);
+ fmt.Printf("phase angle %.2f°\n", PhaseAngle*180/math.Pi)
}