将矩形转换为环形

soh*_*oke 4 math graphics transform

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

这是一个非常粗糙的矩形和圆形草图: 在此输入图像描述

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

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

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

Phi*_*l H 6

尝试使用极坐标.如果将x映射为r和y作为θ(归一化为θ从0到2π),则向r添加一些偏移将改变环的半径,向θ添加偏移将使其围绕圆旋转.

r = fx + a
g = (max_y - min_y)/(2*pi)
theta = gy + b
Run Code Online (Sandbox Code Playgroud)

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

x' = r cos(theta)
y' = r sin(theta)
Run Code Online (Sandbox Code Playgroud)

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