Swift知识扩展:为什么使用cos和sin计算角度和坐标
Swift知识扩展:为什么使用cos和sin计算角度和坐标

Swift知识扩展:为什么使用cos和sin计算角度和坐标

要理解为什么使用 cos 和 sin 来计算角度和坐标,需要从数学上的圆和三角函数的关系说起。

圆的基本特性

1、在一个以原点为圆心、半径为 r 的圆上,任何一点的位置都可以用极坐标表示

点的位置由角度(用弧度或度数表示)和半径决定。

极坐标可以转化为平面上的直角坐标系(即 x 和 y 坐标)。

2、对于某个角度 θ

点的 x 坐标 = 圆心的 x 坐标 + 半径 ×  cos(θ)

点的 y 坐标 = 圆心的 y 坐标 + 半径 ×  sin(θ)

这背后的原因在于三角函数的定义

三角函数的定义

三角函数(sin 和 cos)描述的是一个角度对应的 x 和 y 的比值关系:

1、假设我们在一个单位圆上(半径为 1,圆心在原点)。

2、对于角度 θ,它对应单位圆上的一个点:

x 坐标是点到 y 轴的水平距离:cos(θ) 。

y 坐标是点到 x 轴的垂直距离:sin(θ) 。

如果圆的半径是 r,那么点的坐标会被放大到:

x = r × cos(θ)

y = r × sin(θ)

为什么用 cos 和 sin 来计算坐标

在 SwiftUI 中,视图的位置是在二维平面(x 和 y 坐标)上确定的。

1、圆形排列的需求

我们希望将子视图均匀分布在一个圆上。

坐标必须依据每个点的角度(angle)动态计算。

2、通过三角函数确定坐标

假设圆的半径为 r,圆心的坐标为 (cx, cy),一个点的角度为 θ:

水平偏移量:r × cos(θ),表示从圆心水平向外的距离。

垂直偏移量:r × sin(θ),表示从圆心垂直向外的距离。

点的坐标

x = cx + r × cos(θ)

y = cy + r × sin(θ)

3、计算多个点的坐标

如果需要将 n 个子视图均匀分布在圆上,每个子视图的角度可以计算为:

或用弧度表示:

每个角度都可以用 cos 和 sin 转换为坐标。

举例:点在圆周上的坐标

圆的参数

圆心:(150, 150)

半径:100

点的数量:4

每点的角度间隔:360° ÷ 4 = 90°

计算每个点的坐标

点 0:角度 0°

 x = 150 + 100 × cos(0) = 150 + 100 = 250

 y = 150 + 100 × sin(0) = 150 + 0 = 150

点 1:角度 90°

 x = 150 + 100 × cos(90°) = 150 + 0 = 150

 y = 150 + 100 × sin(90°) = 150 + 100 = 250

点 2:角度 180°

 x = 150 + 100 × cos(180°) = 150 – 100 = 50

 y = 150 + 100 × sin(180°) = 150 + 0 = 150

点 3:角度 270°

 x = 150 + 100 × cos(270°) = 150 + 0 = 150

 y = 150 + 100 × sin(270°) = 150 – 100 = 50

图片来源:三角函数

最终四个点的坐标分别是

(250, 150)

(150, 250)

(50, 150)

(150, 50)

这些点均匀分布在以 (150, 150) 为圆心、半径为 100 的圆上。

使用 cos 和 sin 的关键总结

三角函数本质:cos 和 sin 是用角度计算圆周上点的水平和垂直偏移的工具。

圆形布局:通过三角函数,可以将角度轻松转换为平面坐标。

均匀分布:子视图通过不同的角度(index)均匀排列,坐标动态计算。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注