Select Page
Latest 1.0.1 https://github.com/davidlivadaru/DLAngle MIT ios 10.0, osx 10.12, watchos 3.0, tvos 10.0 DLInterval

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.

## Usage

### Importing the module

You can import this module using:

``import DLAngle``

### Creation

``````let degree = Degree(rawValue: 90.0)
let zeroDegrees = Degree()

### Converting between Degree and Radian

``````let degree = Degree(rawValue: 90.0)

``````let radian = Radian(rawValue: Double.pi)

### Basic Operations

``````let radian = Radian(degrees: 90.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)
angle1 == angle2 // true``````

### Comparison

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

### Foundation.Measurement conversion

``````let angleMeasurement = Measurement<UnitAngle>(value: 45.0, unit: .degrees)
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

## 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: [
]``````

``````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.

### Latest podspec

```{
"name": "DLAngle",
"version": "1.0.1",
"summary": "A Swift module which provides support for a strong typed mathematical angles.",
"type": "MIT",
},
"platforms": {
"ios": "10.0",
"osx": "10.12",
"watchos": "3.0",
"tvos": "10.0"
},
"source": {