跳至主要內容

新圆角算法

Kamimika...大约 3 分钟数学数学算法设计

一种在矩形与圆形间插值以创建新型圆角形状的算法

新圆角算法

我们首先使用极坐标系描述圆和矩形:

r=1 r = 1

矩形

r=1cos2θπ[2θπ12]1 r = \frac{1}{\cos{| \frac{2\theta}{\pi} - [ \frac{2\theta}{\pi} - \frac{1}{2} ] -1|}}

推导过程

高斯函数

[x] [x]

获取小数部分

x[x] x - [x]

向下平移 12\frac{1}{2}

x[x]12 x - [x] - \frac{1}{2}

取绝对值

x[x]12 |x - [x] - \frac{1}{2}|

向右平移 frac12frac{1}{2}

x12[x12]12 |x - \frac{1}{2} - [x - \frac{1}{2}] - \frac{1}{2}|

伸缩变换

2π4xπ212[xπ212]12=π22xπ12[2xπ12]12 \begin{align*} 2\frac{\pi}{4} |\frac{x}{\frac{\pi}{2}} - \frac{1}{2} - [\frac{x}{\frac{\pi}{2}} - \frac{1}{2}] - \frac{1}{2}| \\ = \frac{\pi}{2} |\frac{2x}{\pi} - \frac{1}{2} - [\frac{2x}{\pi} - \frac{1}{2}] - \frac{1}{2}| \end{align*}

取余弦

cosπ22xπ12[2xπ12]12 \cos{\frac{\pi}{2} |\frac{2x}{\pi} - \frac{1}{2} - [\frac{2x}{\pi} - \frac{1}{2}] - \frac{1}{2}|}

取倒数

1cosπ22xπ12[2xπ12]12 \frac{1}{\cos{\frac{\pi}{2} |\frac{2x}{\pi} - \frac{1}{2} - [\frac{2x}{\pi} - \frac{1}{2}] - \frac{1}{2}|}}

获得 圆角矩形

我们记

f(θ)=1g(θ)=1cos2θπ[2θπ12]1 \begin{align*} f(\theta) &= 1 \\ g(\theta) &= \frac{1}{\cos{| \frac{2\theta}{\pi} - [ \frac{2\theta}{\pi} - \frac{1}{2} ] -1|}} \end{align*}

则新圆角可用两者的 线性插值 表示

r=λg(x)+(1λ)f(x) r = \lambda g(x) + (1 - \lambda) f(x)

λ\lambda 表示形状的弯曲程度

{λ=0,矩形,λ=1,圆形,0<λ<1,新圆角. \begin{cases} \lambda = 0, & \text{矩形}, \\ \lambda = 1, & \text{圆形}, \\ 0 < \lambda < 1, & \text{新圆角}. \end{cases}

下图为 λ=\lambda= 0.5 时的情况:

而如果将 λ\lambda 的范围改变,还可以得到更奇特的图形:

下图为 λ=\lambda= 0.5 时的情况:

上次编辑于:
贡献者: wzh656
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.3.0