4

我有一个矩形,我需要“弯曲”成一个环,即矩形的顶部边缘必须映射到环的外圆,底部映射到内圆,并且矩形的边应该连接。

这是矩形和环的非常粗略的草图: 在此处输入图像描述

如果有帮助或有必要,我可以将矩形视为水平线的集合,将环视为圆的集合。

矩形具有从 a 到 b 的水平渐变,应该映射,以便渐变在圆形方向上进行。

我可以看到这是一个非线性变换,但是我不知道在哪里可以学习解决这个问题的技术。任何在 CG 方面有适当经验的人都可以为我指出正确的文本、正确的算法名称或正确的图形库来制作我的戒指吗?

4

1 回答 1

6

尝试只使用极坐标。如果将 x 映射为 r 并将 y 映射为 θ(标准化为 θ 从 0 到 2π),那么向 r 添加一些偏移量将改变环的半径,向 θ 添加偏移量将使其围绕圆旋转。

r = fx + a
g = (max_y - min_y)/(2*pi)
theta = gy + b

其中 a 和 b 是这些偏移量,f 缩放环的宽度,g 将矩形的长度标准化为 2π。从这些极坐标转换回笛卡尔坐标(即屏幕)只是:

x' = r cos(theta)
y' = r sin(theta)

然后,您有 3 个坐标系:(x,y) 用于原始矩形,(r,θ) 用于环的极坐标,(x',y') 用于屏幕坐标。

于 2012-05-21T14:03:10.017 回答