⭐️ARKitでプラネタリウムを作りたい(1)
タイトル通りARkitでプラネタリウムが作りたくなったので作ってみる
(1)では星の座標計算の準備までを作っていく
- 計算に必要なもの
- 星のデータ
- 現在地座標
- 時刻
星のデータ
- 星はめっちゃあるので今回は1等星に絞る
- 一等星21個 + ヘッダーの22行
- 欲しい要素は↓
- 番号:一意の番号
- 名前:星の名前(多分英語)
- 視等級:明るいほど小さい(地球から見たときの明るさ)
- 赤経:天体の位置(時分秒で表される)
- 赤緯:天体の位置(+90 ~ -90)
- 星表はヒッパルコス星表を使用した
StarData.csv
hip_number,name,right_ascension,declination,visual_magnitude
32349,Sirius,6.4509,-16.4247,-1.44
30438,Canopus,6.2357,-52.4144,-0.62
69673,Arcturus,14.1540,19.1114,-0.05
71683,Rigil Kent,14.3940,-60.5006,-0.01
91262,Vega,18.3656,38.4658,0.03
24608,Capella,5.1641,45.5956,0.08
24436,Rigel,5.1432,-08.1205,0.18
37279,Procyon,7.3918,5.1339,0.4
7588,Achernar,1.3742,-57.1411,0.45
27989,Betelgeuse,5.5510,7.2425,0.45
68702,Agena,14.0349,-60.2222,0.61
97649,Altair,19.5046,8.5202,0.76
60718,Acrux,12.2635,-63.0556,0.77
21421,Aldebaran,4.3555,16.3035,0.87
65474,Spica,13.2511,-11.0940,0.98
80763,Antares,16.2924,-26.2555,1.06
37826,Pollux,7.4519,28.0134,1.16
113368,Fomalhaut,22.5738,-29.3718,1.17
62434,Becrux,12.4743,-59.4119,1.25
102098,Deneb,20.4125,45.1649,1.25
49669,Regulus,10.0822,11.5801,1.36
csvファイルを読み込み
用意したcsvファイルを取得して、使いやすいように整形(配列に格納)していく
ViewController.swift
// cavファイル読み込み
var csvArray = [String]()
guard let csvPath = Bundle.main.path(forResource: "StarData", ofType: "csv") else {
return
}
do {
let csvString = try String(contentsOfFile: csvPath, encoding: String.Encoding.utf8)
csvArray = csvString.components(separatedBy: "\n")
// 最後の改行を削除
csvArray.removeLast()
} catch _ as NSError {
return
}
for star in csvArray {
let starDetail = star.components(separatedBy: ",")
print("HIP番号: \(starDetail[0])\n名前: \(starDetail[1])\n赤経: \(starDetail[2])\n赤緯: \(starDetail[3])\n視等級: \(starDatail[4])\n")
}
これで星の方の準備は完了
現在地取得
星の位置は地球のどこにいるかで変わるので、のちの計算のために取得
ほぼコピペなので割愛
時刻取得
星はの位置は時刻によって変わr(略
VierController.swift
// 時刻を取得
let date = Date()
let format = DateFormatter()
format.dateFormat = "yyyy,MM,dd,HH,mm,ss"
format.timeZone = TimeZone(identifier: "Asia/Tokyo")
let currentTime = format.string(from: date).split(separator: ",")
print("現在時刻: \(currentTime[0])/\(currentTime[1])/\(currentTime[2]) \(currentTime[3]):\(currentTime[4]):\(currentTime[5])")
現在時刻: 2019/09/09 02:11:58
値が準備できたので計算処理を作る(次回)
Author And Source
この問題について(⭐️ARKitでプラネタリウムを作りたい(1)), 我々は、より多くの情報をここで見つけました https://qiita.com/bakuwarorin/items/e6578fc917cd48b7e485著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .