我有一个简单的位图,我想在圆柱上做一个投影。
这意味着,我想以某种方式转换图像,这样如果我打印它并环绕柱状圆柱体并从某个位置拍摄它,则生成的图像看起来像原始图像。
我仍然迷失在所有投影算法中(通常与地球投影有关)。
所以我要感谢提示正确的算法是什么以及我可以使用哪些工具将它应用到我的图像中。
我有一个简单的位图,我想在圆柱上做一个投影。
这意味着,我想以某种方式转换图像,这样如果我打印它并环绕柱状圆柱体并从某个位置拍摄它,则生成的图像看起来像原始图像。
我仍然迷失在所有投影算法中(通常与地球投影有关)。
所以我要感谢提示正确的算法是什么以及我可以使用哪些工具将它应用到我的图像中。
假设你有一个长度的矩形图像:L和高度:H。
以及半径为R和高度H'的圆柱体
设A(x,z)为图中的一个点,
然后 A'(x',y',z')=(R * cos(x *(2Pi / L)),R * sin(x *(2Pi / L)),z *(H'/ H)) 将是您的圆柱A点的投影。
证明:
1. z'= z *(H'/ H)
我首先使圆柱体适合图像尺寸,这就是我乘以的原因 :(H'/ H),我保持相同的z轴。 (如果你画它,你会看到它 立刻)
2. x'和y'?
我将图像的每一行都投影成一个圆圈。参数 对于[0,2PI]中的t,圆的方程是(Rcos(t),Rsin(t)) 参数方程将一个段([0,2PI]中的t)映射到一个圆。那是 正是我们要做的。
然后,如果x描述长度为L的行,则x *(2pi)/ L描述一行 长度为2pi,我可以使用参数方程来映射每个点 这条线到一个圆圈。
希望能帮助到你
前一个功能使功能“按”一个平面对着一个圆柱体。
这是一个双射,因此从圆柱体中的给定点可以轻松获得原始图像。
圆柱体的(x,y,z)
图像中的'(x',z'):
z'= z *(H / H')
和x'= L /(2Pi)* {arccos(x / R)*(sign(y))(mod(2Pi))}
(这是一个非常丑陋的公式,但就是这样:D,你需要将模数表示为正值)
如果您可以将其应用于圆柱形图像,则可以获得如何展开图片的方法。
假设你有一个长度的矩形图像:L和高度:H。
以及半径为R和高度H'的圆柱体
设A(x,z)为图中的一个点,
然后 A'(x',y',z')=(R * cos(x *(2Pi / L)),R * sin(x *(2Pi / L)),z *(H'/ H)) 将是您的圆柱A点的投影。
证明:
1. z'= z *(H'/ H)
我首先使圆柱体适合图像尺寸,这就是我乘以的原因 :(H'/ H),我保持相同的z轴。 (如果你画它,你会看到它 立刻)
2. x'和y'?
我将图像的每一行都投影成一个圆圈。参数 对于[0,2PI]中的t,圆的方程是(Rcos(t),Rsin(t)) 参数方程将一个段([0,2PI]中的t)映射到一个圆。那是 正是我们要做的。
然后,如果x描述长度为L的行,则x *(2pi)/ L描述一行 长度为2pi,我可以使用参数方程来映射每个点 这条线到一个圆圈。
希望能帮助到你
前一个功能使功能“按”一个平面对着一个圆柱体。
这是一个双射,因此从圆柱体中的给定点可以轻松获得原始图像。
圆柱体的(x,y,z)
图像中的'(x',z'):
z'= z *(H / H')
和x'= L /(2Pi)* {arccos(x / R)*(sign(y))(mod(2Pi))}
(这是一个非常丑陋的公式,但就是这样:D,你需要将模数表示为正值)
如果您可以将其应用于圆柱形图像,则可以获得如何展开图片的方法。