将矩形转变为环形

4
我有一个矩形需要“弯曲”成环形,即矩形的顶部边缘必须映射到环形的外圆,底部映射到内圆,且矩形的两侧应连接起来。
这是一个极度粗略的矩形和环形草图: enter image description here 如果有帮助或必要,我可以将矩形视为水平线的集合,将环形视为圆的集合。
矩形具有从a到b的水平渐变,应该映射,使得渐变沿着圆形方向进行。
我知道这是一种非线性变换,但不知道去哪里寻找解决此问题的技术。哪位在CG方面有适当经验的人能指点我文本、算法名称或图形库,以制作我的环?

你说这是非线性变换。你需要认识到的是,你可以按任意方式查看数字。它可以是矩形内点的坐标,也可以很容易地以极坐标形式表示点的坐标。数字只是数字,只有你的思维赋予了一组数字以含义。 - user85109
1个回答

7

试着使用极坐标。如果将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') 是屏幕坐标系。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接