5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

⭐️ARKitでプラネタリウムを作りたい(1)

Last updated at Posted at 2019-09-30

タイトル通り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")
}
スクリーンショット 2019-09-30 1.36.25.png

これで星の方の準備は完了

現在地取得

星の位置は地球のどこにいるかで変わるので、のちの計算のために取得

Core Locationを使用
スクリーンショット 2019-09-30 1.03.26.png

ほぼコピペなので割愛

時刻取得

星はの位置は時刻によって変わ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

値が準備できたので計算処理を作る(次回)

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?