CGMath 1.0.2

CGMath 1.0.2

Emilio Peláez维护。



CGMath 1.0.2

CGMath

关于

CGMath是围绕CGGeometry类型(CGPointCGSizeCGRectCGVector)的一系列扩展和函数。它还包含一些针对FloatingPointComparable类型的其他函数。

Comparable

clamp是一个接受三个参数(valueminmax)的函数。如果value <= min,则它将返回min,如果value >= max则返回max,在其他情况下返回value

浮点数

lerp是线性插值函数。给定两个值,startend,以及一个progress(通常在[0, 1]范围内),它将在startend之间执行线性插值并返回该值。

您可以在以下链接了解更多关于线性插值的信息:这里。但其基本原理是,当 progress0 时返回 start,当 progress1 时返回 end,在 [0, 1] 区间内返回 endstart 之差的百分比。例如,lerp(start: 5, end: 15, progress: 0.5) 将返回 10,这正好位于 515 之间,因为 progress0.5

此方法可以取 progress 值超出 [0, 1] 范围,在某些情况下可能很有用,如制作具有弹性的动画,但您可以在调用函数之前使用 clamp() 来防止这种情况。

inverseLerplerp 的反方法。给定三个值,startend 和一个value(通常在[start, end]范围内),它将返回一个 progress 值,以便在使用相同的startend值进行lerp时返回这个value。例如,lerp(start: 5, end: 15, value: 10) 将返回 0.5,因为 10 正好在 515 之间。

remap 将一个范围的值转换为另一个范围。例如,如果您有两个值在 [20, 40] 范围内,您想将它们转换为 [50, 100],您将调用 value.remap(from: (20, 40), to: (50, 100))20 将变为 5040 将变为 100,而 30 将变为 75

CGGeometry 和 DoubleListRepresentable

四个 CGGeometry 类型 CGPointCGSizeCGRectCGVector 符合 DoubleListRepresentable 协议。这意味着它们可以初始化并转换为双精度浮点型列表。在 CGRect 的例子中,此列表恰好有四个元素,在其他情况下,列表应恰好有四个元素。

DoubleListRepresentable 添加了 magnitude 变量以及 normalizelerp 方法,这些方法应该很容易理解。它还添加了四个基本算术函数:+-*/。在乘法和除法的情况下,使用标量(Double)乘以或除以每个元素的每个分量。

CGGeometry 扩展

除了提供由 DoubleListRepresentable 函数和变量外,四种 CGGeometry 类型至少包含一个便利初始化器,这应该很容易理解,而且 CGPointCGSizeCGVector 中含有将值从一种类型转换为其他两种类型的变量。

示例

要运行示例项目,首先克隆仓库,然后在 Example 目录中运行 pod install

安装

CGMath 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行:

pod 'CGMath'

作者

Emilio Peláez,[email protected]

许可

CGMath 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。