// // ContentView.swift // dobbelsteen // // Created by MartinJan gaasbeek on 26/05/2020. // Copyright © 2020 MartinJan gaasbeek. All rights reserved. // import SwiftUI struct ContentView: View { @State private var slee: Double = 0.0 @State private var delta: Double = 228 var body: some View { ZStack{ Color.black.edgesIgnoringSafeArea(.all) VStack{ ZStack { zijkant(nummer: 4) .rotation3DEffect(Angle(degrees: slee + 180 ), axis: (x: 0, y: 1, z: 0)) .offset(x: CGFloat(sin((slee + 180).degrees) * delta) ) .zIndex(cos(slee.degrees + 180) * 100) zijkant(nummer: 3) .rotation3DEffect(Angle(degrees: slee - 90), axis: (x: 0, y: 1, z: 0)) .offset(x: CGFloat(sin((slee - 90).degrees) * delta) ) .zIndex(cos(slee.degrees - 90) * 100) zijkant(nummer: 2) .rotation3DEffect(Angle(degrees: slee + 90), axis: (x: 0, y: 1, z: 0)) .offset(x: CGFloat(sin((slee + 90).degrees) * delta) ) .zIndex(cos(slee.degrees+90) * 100) zijkant(nummer: 1) .rotation3DEffect(Angle(degrees: slee), axis: (x: 0, y: 1, z: 0)) .offset(x: CGFloat(sin((slee).degrees) * delta)) .zIndex(cos(slee.degrees) * 100) } Spacer().frame(height:200) Slider(value: $slee, in: -720...720) Text("\(Int(slee))") .foregroundColor(Color.white) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } struct zijkant: View { var nummer: Int @State private var boel: Bool = false @State private var boel2: Bool = false var body: some View { ZStack{ Rectangle().frame(width: 300, height: 300) .foregroundColor(Color.white) .colorMultiply(boel ? Color.random : Color.random) .animation(Animation.linear(duration: 2).repeatForever(autoreverses: true)) .onAppear{ self.boel = true} Text("\(nummer)") .font(.system(size: 250)) .frame(width: 300, height: 300).border(boel2 ? Color.random : Color.random, width: 5) .animation(Animation.linear(duration: 3.1).repeatForever(autoreverses: true)) .onAppear{ self.boel2 = true} } } } extension Double { public var degrees: Double { return self * Double.pi / 180 } public var ㎭: Double { return self * 180 / Double.pi } } extension Color { static var random: Color { return Color( red: .random(in: 0...1), green: .random(in: 0...1), blue: .random(in: 0...1) ) } }