Untitled
unknown
swift
2 years ago
7.5 kB
6
Indexable
import SwiftUI struct RocketView: View { var body: some View { GeometryReader { geometry in let width = geometry.size.width let height = geometry.size.height let size = min(height, width) ZStack { RocketFuselageView(size: size) ShuttleFuselageView(size: size) MainNozzleView(size: size) WindShieldView(size: size) RightFinView(size: size) LeftFinView(size: size) RightStageView(size: size) LeftStageView(size: size) RightNozzleView(size: size) LeftNozzleView(size: size) } } } } struct RocketFuselageView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.5, y: size * 0.05)) path.addLine(to: CGPoint(x: size * 0.55, y: size * 0.1)) path.addLine(to: CGPoint(x: size * 0.6, y: size * 0.2)) path.addLine(to: CGPoint(x: size * 0.6, y: size * 0.4)) path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.2)) path.addLine(to: CGPoint(x: size * 0.4, y: size * 0.4)) path.addLine(to: CGPoint(x: size * 0.4, y: size * 0.2)) path.addLine(to: CGPoint(x: size * 0.45, y: size * 0.1)) path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.05)) } .stroke(lineWidth: 2) } } struct ShuttleFuselageView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.6, y: size * 0.4)) path.addLine(to: CGPoint(x: size * 0.6, y: size * 0.7)) path.addLine(to: CGPoint(x: size * 0.55, y: size * 0.75)) path.addLine(to: CGPoint(x: size * 0.45, y: size * 0.75)) path.addLine(to: CGPoint(x: size * 0.4, y: size * 0.7)) path.addLine(to: CGPoint(x: size * 0.4, y: size * 0.4)) } .stroke(lineWidth: 2) } } struct MainNozzleView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.55, y: size * 0.75)) path.addLine(to: CGPoint(x: size * 0.575, y: size * 0.825)) path.addQuadCurve( to: CGPoint(x: size * 0.425, y: size * 0.825), control: CGPoint(x: size * 0.5, y: size * 0.85) ) path.addLine(to: CGPoint(x: size * 0.45, y: size * 0.75)) } .stroke(lineWidth: 2) } } struct WindShieldView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.5, y: size * 0.35)) path.addLine(to: CGPoint(x: size * 0.55, y: size * 0.375)) path.addLine(to: CGPoint(x: size * 0.55, y: size * 0.425)) path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.4)) path.addLine(to: CGPoint(x: size * 0.45, y: size * 0.425)) path.addLine(to: CGPoint(x: size * 0.45, y: size * 0.375)) path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.35)) } .stroke(lineWidth: 2) } } struct RightFinView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.6, y: size * 0.55)) path.addLine(to: CGPoint(x: size * 0.75, y: size * 0.75)) path.addLine(to: CGPoint(x: size * 0.75, y: size * 0.8)) path.addLine(to: CGPoint(x: size * 0.625, y: size * 0.8)) path.addLine(to: CGPoint(x: size * 0.55, y: size * 0.75)) } .stroke(lineWidth: 2) } } struct LeftFinView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.4, y: size * 0.55)) path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.75)) path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.8)) path.addLine(to: CGPoint(x: size * 0.375, y: size * 0.8)) path.addLine(to: CGPoint(x: size * 0.45, y: size * 0.75)) } .stroke(lineWidth: 2) } } struct RightStageView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.6, y: size * 0.25)) path.addArc( center: CGPoint(x: size * 0.65, y: size * 0.25), radius: size * 0.05, startAngle: .degrees(180), endAngle: .degrees(0), clockwise: false ) path.move(to: CGPoint(x: size * 0.7, y: size * 0.25)) path.addLine(to: CGPoint(x: size * 0.7, y: size * 0.675)) } .stroke(lineWidth: 2) } } struct LeftStageView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.4, y: size * 0.25)) path.addArc( center: CGPoint(x: size * 0.35, y: size * 0.25), radius: size * 0.05, startAngle: .degrees(0), endAngle: .degrees(180), clockwise: true ) path.move(to: CGPoint(x: size * 0.3, y: size * 0.25)) path.addLine(to: CGPoint(x: size * 0.3, y: size * 0.675)) } .stroke(lineWidth: 2) } } struct RightNozzleView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.625, y: size * 0.8)) path.addLine(to: CGPoint(x: size * 0.625, y: size * 0.825)) path.addLine(to: CGPoint(x: size * 0.6, y: size * 0.85)) path.addLine(to: CGPoint(x: size * 0.6, y: size * 0.875)) path.addQuadCurve( to: CGPoint(x: size * 0.7, y: size * 0.875), control: CGPoint(x: size * 0.65, y: size * 0.9) ) path.addLine(to: CGPoint(x: size * 0.7, y: size * 0.85)) path.addLine(to: CGPoint(x: size * 0.675, y: size * 0.825)) path.addLine(to: CGPoint(x: size * 0.675, y: size * 0.8)) } .stroke(lineWidth: 2) } } struct LeftNozzleView: View { let size: CGFloat var body: some View { Path { path in path.move(to: CGPoint(x: size * 0.325, y: size * 0.8)) path.addLine(to: CGPoint(x: size * 0.325, y: size * 0.825)) path.addLine(to: CGPoint(x: size * 0.3, y: size * 0.85)) path.addLine(to: CGPoint(x: size * 0.3, y: size * 0.875)) path.addQuadCurve( to: CGPoint(x: size * 0.4, y: size * 0.875), control: CGPoint(x: size * 0.35, y: size * 0.9) ) path.addLine(to: CGPoint(x: size * 0.4, y: size * 0.85)) path.addLine(to: CGPoint(x: size * 0.375, y: size * 0.825)) path.addLine(to: CGPoint(x: size * 0.375, y: size * 0.8)) } .stroke(lineWidth: 2) } } struct ContentView: View { @State private var rocketPosition = 2 * UIScreen.main.bounds.width var body: some View { VStack { Spacer() RocketView() .frame(width: 250, height: 250) .offset(y: rocketPosition) Spacer() } .padding() } } //struct ContentView_Previews: PreviewProvider { // static var previews: some View { // ContentView() // } //}
Editor is loading...