纹章生成器(Heraldry Generation)第一部分.基础

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

2018-3-12,星期一

不久之前,我开始在一个随机模拟环境构造器项目上工作,而纹章构造器只是该项目的最初的一部分。

它遵循构造器设计的部分原则:每一个部分只做一件事,做好,并且在整个项目的生态系统中能被共享。

所以在这个原则的指导下,徽章生成器诞生了:输出可以被编程的方式修改、能用必要的元数据给人类或机器描述内容的通用格式图像。

我选定 SVG 作为输出图片格式,主要是因为它是 XML 格式,很容易修改,相对来说体积更小,而且它是矢量图,在缩放的情况下不会失帧。

为了快速地开发,我选择使用 PHP 来完成这个生成器,如果将来需要的话,我会用更高效的语言来重写它,就目前来说,它已经满足我的需求。

最初,我使用一个已经存在的库来处理 SVG ,但当我完成初始版本的时候,我发现这个库暂时还不支持 标签,这意味着我无法将文件剪切成细小的部分。

在第二个迭代版本,我移除了了这个库,直接在 XML 文件上进行处理,最后的效果比较好,支持任意属性的操作。

纹章的生成坚持必要的原则,盾型的徽章基本上如同现在的路标,目的是清楚地指明方向。于是我为这个构造器假定了一些规则:

  1. 如果盾徽的寓意物是金属,那么它的主背景将不会是金属,同样的也不会有颜色;
  2. 只考虑欧洲10世纪-16世纪的背景和寓意物元素;
  3. 徽章将包含该时代的色彩、金属、皮草等元素,英格兰的“血色”着色将不会考虑。

目前来说这是指导性的规则,后期我可能会修改它。

目前,这个构造器只会生成基本背景的盾徽,它只能是一种颜色,或者上下对称、左右对称两种颜色,金属将会暂时保留用于寓意物上。

下面是一个简单的例子:

背景构造器将会被设计成更高的层次,以至于背景的设计将会用于整个构造器的设计,这样它违背了第一个原则。

然而,在颜色的分割上出现了同样的颜色(例如蓝色接着蓝色),在下个版本中我会修复这个问题。

例如下面的这个图片跟上一张看上去一样,但是实际上是有区别的,这是对称的颜色相同造成的。

到目前为止,基本的设计是合理的,下面这是一个上下对称的盾徽例子:

你能在GitHub上找到这个构造器的源代码。


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

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

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


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

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

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