我有一个矩形,我需要'弯曲'成一个环,即矩形的上边缘必须映射到环的外圆,底部到内圆,矩形的边应该连接
这是一个非常粗糙的矩形和圆形草图:
如果它有用或有必要,我可以将矩形作为水平线的集合处理,将环作为圆的集合处理。
矩形具有从a到b的水平渐变,应该映射以使渐变在圆形方向上前进。
我可以看到这是一个非线性变换,但是在哪里学习解决这个问题的技术时我很遗憾。有没有合适CG经验的人能指出我的正确文本,正确的算法名称或正确的图形库来制作我的戒指吗?
答案 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')表示屏幕坐标。