Swiftpack.co - Package - davidlivadaru/DLAngle

DLAngle Logo

Carthage compatible CocoaPods compatible Swift Package Manager Swift 4.0

Provides an abstraction for mathematical angle. Because the angle is a type, errors such as:

  • sum or subtract a degree angle with a radian angle
  • pass degree angle to a trigonometric function from standard library

are either not possible or catched at compile time. Support convenience initializers, operators and functions for natural, fast and productive workflow.

Table of contents

Usage

Importing the module

You can import this module using:

import DLAngle

Creation

let degree = Degree(rawValue: 90.0)
let zeroDegrees = Degree()
let radian = Radian(rawValue: Double.pi / 2)
let zeroRadians = Radian()

Converting between Degree and Radian

From Degree to Radian:

let degree = Degree(rawValue: 90.0)
let radian = Radian(degree: degree)

From Radian to Degree:

let radian = Radian(rawValue: Double.pi)
let degree = Degree(radian: radian)

Basic Operations

Addition

let radian = Radian(degrees: 90.0)
radian += Radian(degress: 45.0)
// radian.rawValue = 3 * Double.pi / 4

Subtraction

var degrees = Degree(radians: Double.pi / 2)
degrees = degrees - Degree(radians: Double.pi / 6)
// degrees.rawValue = 60.0

Multiplcation

let half = Radian(rawValue: Double.pi / 2)
let pi = one * 2 
// '2 * one' works as well

Division

let pi = Radian(rawValue: Double.pi)
let sixtyDegreesRadian = one / 3 
// '1 / pi' works as well

Normalization

let degree = Degree(rawValue: 750.0)
degree.normalize()
// degree.rawValue = 30.0
let angle1 = Radian(rawvalue: 7 * Double.pi)
let angle2 = angle1.normalized()
// angle2.rawValue = Double.pi

Equality

let angle1 = Radian(rawValue: Double.pi)
let angle2 = Radian(degrees: 180.0)
angle1 == angle2 // true

Comparison

let angle1 = Radian(rawValue: Double.pi)
let angle2 = Radian(degrees: 90.0)
angle1 < angle2 // false

Foundation.Measurement conversion

let angleMeasurement = Measurement<UnitAngle>(value: 45.0, unit: .degrees)
let radian = Radian(measurement: angleMeasurement)
radian.measurement // Measurement<UnitAngle>(value: Double.pi / 4, unit: .radians)
let degrees = Degrees(measurement: angleMeasurement)
degrees.measurement // Measurement<UnitAngle>(value: 45.0, unit: .degrees)

Inverse trigonometric functions

Inverse functions are provided by using convenience constructors of Radian type.

do {
   let angle = try Radian(acos: -1.0)
} catch {
   // handle error
}

Trigonometric functions

let angle = Radian(degrees: 45.0)
if let sin: Double = try? angle.sin() {
   // use computed sine value
}

Constants

Frequently used Radian angles have constants:

let pi = Radian.pi
let half_quadrant_II = Radian.pi_2 + Radian.pi_4

Installation

Supported Operating Systems

  • macOS 10.12 and later
  • iOS 10.0 and later
  • watchOS 3.0 and later
  • tvOS 10.0 and later
  • Ubuntu - check official site to find which versions support Swift 4.0.

1. Carthage

github "davidlivadaru/DLAngle"

If you need the framework only for a single OS, then I propose to use --platform [iOS|macOS|watchOS|tvOS] specifier when your perform carthage update.

2. CocoaPods

Add the dependency in your Podfile.

pod 'DLAngle'

3. Swift Package Manager

Add the the following dependecy in your Package.swift:

dependencies: [
    .package(url: "https://github.com/davidlivadaru/DLAngle.git", .upToNextMajor(from: "1.0.0"))
]

and update your target's dependencies:

targets: [
        .target(
            name: "YourTargetName",
            dependencies: ["DLAngle"])),
    ]

Contribution

Module is covered by unit tests, however, bugs always slip through. If you find a bug in the module create an issue.

If you want to contribute on fixing bugs or implementing new features then create a pull request.

License

DLAngle is released under MIT license. See LICENSE for details.

Github

link
Stars: 0
Help us keep the lights on

Releases

1.0.1 - Mar 25, 2018

Update deployment target to 10.12 for macOS.

1.0.0 - Jan 21, 2018

0.2.2 - Feb 20, 2017

0.2.1 - Feb 19, 2017

0.2.0 - Feb 19, 2017