我有一个矩形,我需要“弯曲”成一个环,即矩形的顶部边缘必须映射到环的外圆,底部映射到内圆,并且矩形的边应该连接。
这是矩形和环的非常粗略的草图:
如果有帮助或有必要,我可以将矩形视为水平线的集合,将环视为圆的集合。
矩形具有从 a 到 b 的水平渐变,应该映射,以便渐变在圆形方向上进行。
我可以看到这是一个非线性变换,但是我不知道在哪里可以学习解决这个问题的技术。任何在 CG 方面有适当经验的人都可以为我指出正确的文本、正确的算法名称或正确的图形库来制作我的戒指吗?
尝试只使用极坐标。如果将 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') 用于屏幕坐标。