如何绘制具有许多段的环形

时间:2017-03-08 04:19:06

标签: ruby imagemagick rmagick

我想绘制一个由许多部分组成的椭圆,例如: simple_ellipse

目标是使用变量定义外部和内部直径以及分段数量,并让程序自动确定分段的大小和排列。

过去我一直在使用rmagick绘制一个由正方形组成的正方形,但我已经意识到当你需要考虑段的内部和外部曲线时会变得更加复杂。

我可以看到我如何制作一张图片并且"复制/粘贴"它周围。

我希望可能有另外一个宝石/库,我可以用它来制作一些内置的循环方法。

好像我可以使用RVG(红宝石矢量图形)绘制它们。 我可以使用多边形方法,但这需要计算点的精确x / y坐标。 我还可以使用"路径":http://www.w3.org/TR/SVG11/paths.html 这将允许贝塞尔曲线和椭圆弧

这些方法中的任何一种似乎都会涉及大量计算。

我的想法是:

  1. 计算内圈和外圈
  2. 使用这些点来获得4"角落",
  3. 这仍然需要考虑弯曲的边缘。如果我选择的值大于"角落#34;,那么我可以在内外圆圈中绘制它们以进行修剪。

    然而,这似乎是用棍子打败了问题。

    理想情况下,我还希望继续使用更高级的图纸,例如: medium_difficulty_elipse

    甚至 enter image description here

    是否有任何图书馆/宝石,甚至是我可能会忽略的过程,这会让这更简单?

1 个答案:

答案 0 :(得分:0)

不确定这是否符合要求,但值得一看:

convert  -size 600x50  xc:black xc:yellow                    \
      \( -size 200x100 xc:lime xc:cyan xc:magenta +append \) \
         -size 600x25 xc:red -size 600x10 xc:blue -append result.png

enter image description here

现在通过改变最后一行去极地!

convert -size 600x50 xc:black xc:yellow                    \
    \( -size 200x100 xc:lime xc:cyan xc:magenta +append \) \
      -size 600x25 xc:red -size 600x10 xc:blue -append     \
      -background none -virtual-pixel none -distort polar 0 result.png

enter image description here

或使用垫片:

convert -size 600x50 xc:black xc:yellow xc:none[600x20\!] \( -size 180x100 xc:lime xc:none[20x100\!] xc:cyan xc:none[20x100\!] xc:magenta xc:none[20x100\!] +append \) xc:none[600x30\!] -size 600x25 xc:red -size 600x10 xc:blue -append -background none -virtual-pixel none -distort polar 0 result.png

enter image description here