An Angle type already exists in Foundation; see Measurement<UnitAngle>. You could add some convenience methods in an extension pretty easily.
import Foundation typealias Angle = Measurement<UnitAngle> extension Measurement where UnitType == UnitAngle { var sine: Double { let radians = self.converted(to: .radians).value return sin(radians) } static var threeQuarterTurn: Angle { return Angle(value: 0.75, unit: .revolutions) } } let x = Angle.threeQuarterTurn x.sine // -1 -BJ > On Jan 13, 2018, at 9:31 PM, Erica Sadun via swift-evolution > <swift-evolution@swift.org> wrote: > > I would like to see a full Geometry implementation but I don't think it > should be part of the standard library. > > I've kicked around some ideas here: > > * https://gist.github.com/erica/8cb4b21cf0c429828fad1d8ad459b71b > <https://gist.github.com/erica/8cb4b21cf0c429828fad1d8ad459b71b> > * https://gist.github.com/erica/ee06008202c9fed699bfa6254c42c721 > <https://gist.github.com/erica/ee06008202c9fed699bfa6254c42c721> > > and > > * https://github.com/erica/SwiftGeometry > <https://github.com/erica/SwiftGeometry> > >> On Jan 13, 2018, at 7:49 PM, Jonathan Hull via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> Hi Evolution, >> >> I would really like to see Swift gain an Angle type in the standard library. >> Every time I have to deal with an angle in an api, I have to go figure out >> the conventions for that call. Is it in degrees? Is it in radians? What if >> it is in radians, but I want to think about it in degrees? >> >> I ended up writing an Angle type for my own code a few years back, and I >> have to say it is really wonderful. It has greatly simplified my graphics >> work. It takes a lot of mental load off of my brain when dealing with >> Angles. >> >> I can of course initialize it either as degrees or radians (or revolutions), >> but I can also just say things like ‘.threeQuarterTurn’, and then I can get >> the value back out in whatever format I like. There are also useful >> additions that let me normalize the angle to different ranges and which let >> me snap to the nearest multiple of an angle. Both of these are enormously >> useful for user facing features. I can also do math on angles in a way that >> makes geometric sense for angles. It is also really useful for interacting >> with CGVectors in intelligent ways. >> >> Using Doubles or CGFloats to represent angles everywhere is just >> semantically wrong IMHO, and it stops us from adding all of these >> angle-specific niceties. >> >> Happy to provide code if there is interest… >> >> Thanks, >> Jon >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution