目录
目录README.md

CGPathIntersection

CGPathIntersection is a library for iOS, macOS, and tvOS that identifies points where two CGPaths intersect.

Surprisingly, this is not provided out-of-the-box by CoreGraphics. Intersections can be calculated analytically for simple geometric shapes (especially straight lines), but that method becomes rather challenging when considering a CGPath can be arbitrarily complex. CGPathIntersection solves this problem by rendering each path into an image and then finding the exact pixels where they intersect.

Installation

Swift Package Manager

Add the following dependency to your package definition:

.package(
  name: "CGPathIntersection",
  url: "https://github.com/calda/CGPathIntersection.git",
  from: "4.0.0")

Carthage

Add github "calda/CGPathIntersection" to your Cartfile

CocoaPods

Add pod 'CGPathIntersection' to your Podfile

Usage

import CGPathIntersection

let path1 = CGPath(...)
let path2 = CGPath(...)
        
path1.intersects(path2) // returns a boolean
path1.intersectionPoints(with: path2) // returns an array of points

If performing many calculations, you can increase performance by creating a CGPathImage. Any calculations performed on a pre-existing CGPathImage will run faster than the same calculation performed on a raw CGPath.

import CGPathIntersection

let pathImage = CGPathImage(from: CGPath(...))
let otherPathImages: [CGPathImage] = [...]

let intersectingPaths = otherPathImages.filter { pathImage.intersects($0) }

Example

CGPathIntersection was created as a component of Streets, a prototype SpriteKit game that simulates managing a network of streets. Streets uses CGPathIntersection to connect individual roads together with physical intersections. When a car reaches an intersection, it makes a random turn onto one of the other connected roads.

Streets also has some support for more complex paths, like roundabouts:

关于
6.4 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

©Copyright 2023 CCF 开源发展委员会
Powered by Trustie& IntelliDE 京ICP备13000930号