将矩形转换为环形

时间:2012-05-21 13:55:14

标签: math graphics transform

我有一个矩形,我需要'弯曲'成一个环,即矩形的上边缘必须映射到环的外圆,底部到内圆,矩形的边应该连接

这是一个非常粗糙的矩形和圆形草图: enter image description here

如果它有用或有必要,我可以将矩形作为水平线的集合处理,将环作为圆的集合处理。

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

我可以看到这是一个非线性变换,但是在哪里学习解决这个问题的技术时我很遗憾。有没有合适CG经验的人能指出我的正确文本,正确的算法名称或正确的图形库来制作我的戒指吗?

1 个答案:

答案 0 :(得分:5)

尝试使用polar coordinates。如果将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')表示屏幕坐标。