Skip to content

Instantly share code, notes, and snippets.

@eugenebokhan
Created March 2, 2018 11:59
Show Gist options
  • Save eugenebokhan/15cb50e407a6f51c09d9e72440199e4b to your computer and use it in GitHub Desktop.
Save eugenebokhan/15cb50e407a6f51c09d9e72440199e4b to your computer and use it in GitHub Desktop.
CGPoint extensions
extension CGPoint {
init(_ size: CGSize) {
self.x = size.width
self.y = size.height
}
init(_ vector: SCNVector3) {
self.x = CGFloat(vector.x)
self.y = CGFloat(vector.y)
}
init(x: Float, y: Float)
{
self.init(x: CGFloat(x), y: CGFloat(y))
}
func distanceTo(_ point: CGPoint) -> CGFloat {
return (self - point).length()
}
func length() -> CGFloat {
return sqrt(self.x * self.x + self.y * self.y)
}
func midpoint(_ point: CGPoint) -> CGPoint {
return (self + point) / 2
}
func friendlyString() -> String {
return "(\(String(format: "%.2f", x)), \(String(format: "%.2f", y)))"
}
}
func + (left: CGPoint, right: CGPoint) -> CGPoint {
return CGPoint(x: left.x + right.x, y: left.y + right.y)
}
func - (left: CGPoint, right: CGPoint) -> CGPoint {
return CGPoint(x: left.x - right.x, y: left.y - right.y)
}
func += (left: inout CGPoint, right: CGPoint) {
left = left + right
}
func -= (left: inout CGPoint, right: CGPoint) {
left = left - right
}
func / (left: CGPoint, right: CGFloat) -> CGPoint {
return CGPoint(x: left.x / right, y: left.y / right)
}
func * (left: CGPoint, right: CGFloat) -> CGPoint {
return CGPoint(x: left.x * right, y: left.y * right)
}
func /= (left: inout CGPoint, right: CGFloat) {
left = left / right
}
func *= (left: inout CGPoint, right: CGFloat) {
left = left * right
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment