【问题标题】:Transforming a rectangle into a ring将矩形变成圆环
【发布时间】:2012-05-21 13:55:14
【问题描述】:

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

这是一个非常粗略的矩形和环草图:

如果有帮助或必要,我可以将矩形视为水平线的集合,将环视为圆的集合。

矩形有一个从 a 到 b 的水平渐变,应该映射,以便渐变在圆形方向上进行。

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

【问题讨论】:

  • 你说是非线性变换。您需要认识到的是,您可以以任何您希望的方式查看号码。它可能是矩形内一个点的坐标。或者可以很容易地根据极坐标形式的点的坐标来查看它。数字就是——数字。只有你的头脑才能为一组数字添加意义。

标签: math graphics transform


【解决方案1】:

尝试只使用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') 用于屏幕坐标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多