将一条线转换为一个环是图形程序中的一项简单任务,例如GIMP:
Filter ⇒ Distorts ⇒ Polar Coordinates http://adamhaskell.net/img/transform.png
我正在尝试研究是否可以在CSS中产生相同的效果。
所以我解决了以下问题:
x
映射到r
,将y
映射到θ
x
会缩放到[0,w/2]
的范围,w
是图片的宽度y
缩放到[0,2π]
xc = rp*cos(θp)
和yc = rp*sin(θp)
x' = (x/2)*cos(y/h*2π) + w/2;
y' = (x/2)*sin(y/h*2π) + h/2;
这一切都很好,但我怎么能在CSS中产生这样的变换呢?据推测,没有一个关键字是有用的,所以它必须是矩阵变换。好吧,我不知道如何从上面的两个方程构建矩阵,更不用说如何在CSS变换中表示它。
最后一步有人可以帮助我吗?
答案 0 :(得分:5)
我从未使用CSS转换矩阵,但我认为你想要的是不可能。 使用变换矩阵,您可以执行线性变换。线性变换总是将直线映射到直线或0. Take a look at Wikipedia for more information。
因此,使用矩阵将直线映射到圆是不可能的。
答案 1 :(得分:-2)
至少可以制作2个对称的三阶贝塞尔曲线 使用
Y(t)=(t ^ 3,t ^ 2,t,1)* M *(P0,P1,P2,P3)
时间
P0 - P3控制点坐标。这个向量必须是垂直的。我不知道如何在这个编辑器中制作垂直向量。
Y(t) - 曲线坐标
M - 4 * 4矩阵行1(-1,3,-3,1)行2(3,-6,-3,0)行3(-3,3,0,0)行4( 1,0,0,0)
现在您只需要一个从线坐标定义控制点的函数。