纹章生成器(Heraldry Generation)第二部分:Go, 背景区域和符号

zhucheer · 2018-05-18 11:43:26 · 1750 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-05-18 11:43:26 的文章,其中的信息可能已经有所发展或是发生改变。

发布于 2018-03-21 星期三

这次的迭代有一些激动人心的改变。 特别是我用 Go 重写的整个程序。实际上我在这块没有花太多时间。这样带来的结果就是程序有点乱,虽然如此,我还是花几分钟来介绍下。首先,我来讲讲纹章的改变。

在最进一次迭代中只用 fess 和 pale (译者注:纹章学中的专业术语,标识徽章上面的竖线和横线图案,详看维基)) 两部分,之后我添加了一些其余的基本元素:bend,bend sinister(专业术语,维基解释)),saltire(叉叉 维基解释) ,和 chevron(维基解释))

我还添加了最基本的元素 —— 这些几何图形叫做“Ordinary”(专业名词 维基解释))。并不是所有的普通 “Ordinary” 都包含在内,而且它看起来有点歪。因为我是手动创建并尝试错误修正,并没有进行准确的计算, 所以这还有很多问题需要我去解决。

例如,这里有一对图案来自当前的迭代程序。注意他们是否有点不对劲? image

另一个问题是很多生成出来的设计视觉上的效果不是很好。将来很有可能进行一个迭代来改善这个问题。 说了这么多,它也产生了相当不多的效果。这是一些例子: image

好了,现在让我们来聊一聊 Go。

我一直想把这个程序用 Go 重写;我使用了 PHP 这种快速成型的语言。然而,我遇到了阻碍,开发上没有更多的进展。我使用的 SVG 库不支持我需要的特性。我可以拆封那个库,处理原始 SVG 的 XML,但这样有些麻烦了。

然后我发现了一个优秀的 SVG Go 包,功能丰富,叫做 SVGo。它有几个我需要的功能。然后,我仅仅做了下简单改动,花了一个早上的时间来重写整个代码。

带来的结果就是程序更快且更容易编写;

不过这并不是说就没有问题了。

所有的代码都在一个大文件中。可视化的内联元素通过大块的 switchif 来控制。没有单元测试(已经坑了我好几次了)。

现在 我将要添加更多复杂的符号(像动物的那种),我不能把所有的东西都放到一个文件中。我希望在下个迭代版本中去解决这个问题。


via: https://www.benovermyer.com/post/heraldry-pt-2/

作者:Ben Overmyer  译者:zhucheer  校对:rxcai

本文由 GCTT 原创编译,Go语言中文网 荣誉推出


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1750 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传