全体図
仕様
- 釣行ソフトのTide情報に昼間のデータを追加しました
昼間の計算
- 緯度経度を取得
- Teidの”na"データを使う
- 清水、小浜、金沢、敦賀、大阪、境、神戸を追加しました
-
let na = [["静岡/清水", 35.01, 138.30, 95],
["静岡/舞阪", 34.41, 137.37, 70],
["愛知/師崎", 34.42, 136.59, 125],
["愛知/武豊", 34.51 ,136.56 ,132],
["三重/五ケ所",34.19, 136.40, 103],
["三重/鳥羽", 34.29, 136.51, 120],
["三重/的矢", 34.22, 136.52, 110],
["三重/尾鷲", 34.04, 136.13, 104],
["福井/小浜", 35.30, 135.44, 18],
["福井/金沢", 36.37, 136.36, 20],
["福井/敦賀", 35.40, 136.04, 18],
["大阪/大阪", 34.39, 135.26, 95],
["大阪/堺 ", 34.35, 135.28, 95],
["兵庫/神戸", 34.41 ,135.12, 95]
]
- 選択された場所から緯度と経度を取得する
-
let latAy = na[tideSelectionValue][1] as! Double
let lngAy = na[tideSelectionValue][2] as! Double
lat = dg2dc( latAy )
lon = dg2dc( lngAy )
-
- Teidの”na"データを使う
-
日の出・日の入りを計算
-
指定された場所の緯度と経度を用いて計算し、戻り値として日の出時刻と日の入り時刻の2つのDouble値を返します。
-
//......................................
//参考PG:http://k-ichikawa.blog.enjoy.jp/etc/HP/js/sunRise/srs1.html
//......................................
func calcA( m: Int, d1: Int ) -> (Double, Double) {
let MD = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // 日数
let del:Double
let phi:Double
let t: Double
var T: Double
let delta: Double
let ee: Double
let tsta: Double
let tend: Double
//TOUKYOU
var lat = 35.68
var lon = 139.77
let latAy = na[tideSelectionValue][1] as! Double
let lngAy = na[tideSelectionValue][2] as! Double
lat = dg2dc( latAy )
lon = dg2dc( lngAy )
var jd2 = d1
for i in 0..<m-1 {
jd2 += MD[i]
}
let jd: Double = Double( jd2 ) + 0.5
let nd = 365.0;
let w = 2.0 * Double.pi / nd
let wj = w * Double(jd)
delta = 0.33281 - 22.984*cos(wj) - 0.34990*cos(2*wj) - 0.13980*cos(3*wj)
+ 3.7872*sin(wj) + 0.03250*sin(2*wj) + 0.07187*sin(3*wj)
ee = 0.0072*cos(wj) - 0.0528*cos(2*wj) - 0.0012*cos(3*wj)
- 0.1229*sin(wj) - 0.1565*sin(2*wj) - 0.0041*sin(3*wj)
phi = lat*Double.pi/180
del = delta*Double.pi/180
t = acos*1 / (cos(del) * cos(phi))) * 180 / Double.pi
// t = acos(-tan(del)*tan(phi))*180/Double.pi
//日の出
T = (-t + 180)/15;
tsta = T - (lon - 135)/15.0 - ee
//日の暮れ
T = (t + 180)/15
tend = T - (lon - 135)/15.0 - ee
//tmid = (tsta + tend)/2;
return (tsta, tend)
}
-
-
- 組み付け
- 昼間時間帯とTide表の枠を表示
-
- 昼間の時間帯を表示するには、gridBoxを呼び出します
-
func gridBox(dosu01:Double, dosu02:Double) -> some View {
gridBox1(width: 140, height: 100, dosu01:dosu01, dosu02:dosu02 )
.offset(x: 10, y: -5)
.fill(Color(red: 0.3, green: 0.3, blue: 0.1))
}
func gridBox1(width: CGFloat, height: CGFloat, dosu01:Double, dosu02:Double ) -> some Shape {
Path { path in
var i = width / 24 * dosu01
path.move(to: CGPoint(x: i, y: 0))
path.addLine(to: CGPoint(x: i , y: height))
i = width / 24 * dosu02
path.addLine(to: CGPoint(x: i , y: height))
path.addLine(to: CGPoint(x: i, y: 0))
path.closeSubpath()
}
}
-
- Tideグラフと現在の時間を追加し表示します。この機能については、以前の投稿で確認ねがいます
- 昼間の時間帯を表示するには、gridBoxを呼び出します
今後について
- 動きを確認したら、GitHubに上げます → アップデートしました
- 日の出、日の入り時間を数値で表示できれば嬉しい
- 釣り関連表に統合されていますが、この機能単体でリリースするか思案しています
ここまで読んでいただき、ありがとうございます
*1:-51 / 60 * Double.pi / 180-sin(del)*sin(phi