Metron
几何学,简化版本。
Metron 是一系列几何函数和类型的综合集,它扩展了 CoreGraphics 提供的 2D 几何原语的函数。Metron 完全用 Swift 编写,允许你用非常直观的语句表达复杂的几何计算。
示例 1。
Circle(in: viewFrame).contains(touchPoint)
↳ 创建一个位于 viewFrame
内(居中)的 Circle
,并检查 touchPoint
是否在该圆内。
示例 2。
(Angle(.pi) + Angle(270, unit: .degrees)).normalized // Angle of 0.5pi (90°)
↳ 添加两个 Angles
,一个用弧度表示(默认)和一个用度数表示。总和被归一化到 0 到 2𝜋 弧度(或 0 到 360 度)内。
示例 3。
LineSegment(a: startPoint, b: currentPoint).intersection(with: viewFrame.lineSegment(for: minYEdge))
↳ 从一个(触摸)起点和一个当前点创建一个 LineSegment
,返回与视图框架(frame)的 minYEdge
的交点(如果这些线段确实相交的话)。
示例 4。
let rotatedPoints = viewFrame.points.map { $0.applying(rotationTransform, anchorPoint: rotationPoint) }
let path: CGPath = Polygon(points: rotatedPoints).path
↳ 将视图框架(一个 CGRect
)的每个角点映射到一个点,该点被应用了一个 rotationTransform
,将 rotationPoint
作为变换的锚点。用这些点,初始化了一个 Polygon
,代表了视图旋转后的矩框。从该多边形中,我们可以导出可以被绘制的 CGPath
。
还有更多...
扩展
对于 CGPoint
- 到其他
CGPoint
的距离 - 裁剪到
CGRect
- 相对位置在
CGRect
中 - 规范化位置在
CGRect
中 - 转换为
CGVector
- 四舍五入到非小数部分
- 加法、减法、乘法...
- 由
CGPoints
数组构成的凸包(返回一个多边形
)
对于 CGVector
- 量大小
- 角度
- 带大小和角度的便捷初始化器
- 转换为
CGPoint
- 反变换
- 主边
- 主角
- 从一个点推导出线
- 从一个点推导出线段
-
CGAffineTransform
扩展 - 加法、减法、乘法...
对于 CGSize
- 面积
- 交换宽度和高度
- 裁剪到其他
CGSize
- 使用乘法和除法进行缩放
对于 CGRect
- 许多便捷初始化器,包括 AspectFit / AspectFill 用于大小
- 缩放
- 角点
- 边作为线段
- 面积
- 中心
- 周长
-
CGPath
对于 CGRectEdge
- 坐标轴(x 或 y)
- 相邻角
- 相对边
对于 CGAffineTransform
- 使用
CGVector
创建平移变换 - 使用指定的锚点应用变换
新类型
行
- 斜率
- y轴截距
- x轴截距
- 水平?/ 竖直?/ 平行于:(...)?
- 获取垂直线
- 确定与其他
行
或行线段
的交点
行线段
- 长度
- 导出
行
- 旋转
- 确定与其他
行
或行线段
的交点 -
CGPath
圆
- 半径
- 直径
- 周长
- 面积
- 中心
- 宽度 / 高度
- 边界矩形
- 包含点?
-
CGPath
- 周长上的点(将圆分成步数,沿特定方向旋转...)
三角形
- 顶点(作为
CGPoint
) - 边(作为
行线段
) - 角度(作为
角度
,详见下文) - 角平分线(作为
行线段
) - 高(作为
行线段
) - 等边?/ 等腰?/ 锐角?/ 直角?/ 斜边?/ 锐角?/ 钝角?
- 质心
- 外心
- 内心
- 垂心
- 面积
- 边界矩形
- 包含点?
-
CGPath
正方形
- 边长
- 面积
- 周长
- 中心
-
CGPath
-
DRect
多边形
- 使用点或线段初始化
- 边数
- 自相交吗?
- 凸形/凹形?
- 面积
- 周长
- 中心
- 边界矩形
- 包含点?
-
CGPath
角
- 相邻边(《CGRectEdges》)
- 对角线
角度
- 使用弧度或角度初始化
- 转换单位
- 归一化
- 反转
- 比较
- 加法、减法、乘法...
- 基本三角函数也接受“角度”
- 使用“角度”创建旋转《CGAffineTransform》
安装
CocoaPods
Metron 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "Metron"
Carthage
Metron 还可以通过 Carthage 提供。要安装它,只需将以下行添加到您的 Cartfile 中
github "toineheuvelmans/Metron"
Swift 包管理器
Metron 也可以与 Swift 包管理器 一起使用。将 Metron 添加到您的 Package.swift
文件的 dependencies
中的值
dependencies: [
.Package(url: "https://github.com/toineheuvelmans/metron.git", majorVersion: 1)
]
建议或反馈?
请随意创建一个合并请求,发起一个问题或在Twitter上找到我(https://twitter.com/toineheuvelmans)。
许可
Metron 在MIT许可下可用。更多信息请参阅LICENSE文件。