cos θ x = r(θ)cos θ y = r(θ)sin θ S В Y Z Y Z ͱ͍ͬͨɺۃ࠲ඪͱަ࠲ඪͷ͕ؔࣜಋ͖ग़ͤΔͨΊɺ x(θ) = a(1 − e2)cos θ 1 + e cos θ y(θ) = a(1 − e2)sin θ 1 + e cos θ ͱ͍͏ͷيಓํఔ͕ࣜಘΒΕΔɻ a: ପԁͷܘ e: ৺
= UUID() let angle: Double // 0ʙ360 let x: Double let y: Double } struct PlanetsSimulationView: View { @State private var earthAngle: Double = 0 private let timer = Timer.publish(every: 0.02, on: .main, in: .common).autoconnect() // 360°ͷٿͷيಓσʔλΛੜ private let earthOrbit: [OrbitData] = { let a = 100.0 let e = 0.0167 return (0..<360).map { angle in let rad = Double(angle) * Double.pi / 180 let r = a * (1 - e * e) / (1 + e * cos(rad)) let earthX = r * cos(rad) let earthY = r * sin(rad) return OrbitData(angle: Double(angle), x: earthX, y: earthY) }
= UUID() let angle: Double // 0ʙ360 let x: Double let y: Double let z: Double } struct PlanetsSimulationView: View { @State private var earthAngle: Double = 0 private let timer = Timer.publish(every: 0.02, on: .main, in: .common).autoconnect() // 360°ͷٿͷيಓσʔλΛੜ private let earthOrbit: [OrbitData] = { let a = 100.0 let e = 0.0167 return (0..<360).map { angle in let rad = Double(angle) * Double.pi / 180 let r = a * (1 - e * e) / (1 + e * cos(rad)) let earthX = r * cos(rad) let earthY = r * sin(rad) let earthZ = 0.0 return OrbitData(angle: Double(angle), x: earthX, y: earthY, z: earthZ) } }()