這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。2018-3-12,星期一不久之前,我開始在一個隨機類比環境構造器項目上工作,而紋章構造器只是該項目的最初的一部分。 它遵循構造器設計的部分原則:每一個部分只做一件事,做好,並且在整個項目的生態系統中能被共用。所以在這個原則的指導下,徽章產生器誕生了:輸出可以被編程的方式修改、能用必要的中繼資料給人類或機器描述內容的通用格式映像。我選定 SVG 作為輸出圖片格式,主要是因為它是 XML 格式,很容易修改,相對來說體積更小,而且它是向量圖,在縮放的情況下不會失幀。為了快速地開發,我選擇使用 PHP 來完成這個產生器,如果將來需要的話,我會用更高效的語言來重寫它,就目前來說,它已經滿足我的需求。最初,我使用一個已經存在的庫來處理 SVG ,但當我完成初始版本的時候,我發現這個庫暫時還不支援 `<msk>` 標籤,這意味著我無法將檔案剪下成細小的部分。在第二個迭代版本,我移除了了這個庫,直接在 XML 檔案上進行處理,最後的效果比較好,支援任意屬性的操作。紋章的產生堅持必要的原則,盾型的徽章基本上如同現在的路標,目的是清楚地指明方向。於是我為這個構造器假定了一些規則: 1. 如果盾徽的寓意物是金屬,那麼它的主背景將不會是金屬,同樣的也不會有顏色; 2. 只考慮歐洲10世紀-16世紀的背景和寓意物元素; 3. 徽章將包含該時代的色彩、金屬、皮草等元素,英格蘭的“血色”著色將不會考慮。目前來說這是指導性的規則,後期我可能會修改它。目前,這個構造器只會產生基本背景的盾徽,它只能是一種顏色,或者上下對稱、左右對稱兩種顏色,金屬將會暫時保留用於寓意物上。下面是一個簡單的例子:![](https://d33wubrfki0l68.cloudfront.net/152773ef00fd7c1f177ad2de4908fa49cd8c32e3/a28dc/heraldry-basic-field.svg)背景構造器將會被設計成更高的層次,以至於背景的設計將會用於整個構造器的設計,這樣它違背了第一個原則。然而,在顏色的分割上出現了同樣的顏色(例如藍色接著藍色),在下個版本中我會修複這個問題。例如下面的這個圖片跟上一張看上去一樣,但是實際上是有區別的,這是對稱的顏色相同造成的。![](https://d33wubrfki0l68.cloudfront.net/052c829f6fb97c432e14e3dd1fb207241e2a3b11/84fda/heraldry-duplicate-colors.svg)到目前為止,基本的設計是合理的,下面這是一個上下對稱的盾徽例子:![](https://d33wubrfki0l68.cloudfront.net/61eef0ee0bb1590dcd0e03aa22d61f686ef6203c/19b46/heraldry-basic-division.svg) 你能在[GitHub](https://github.com/ironarachne/heraldry)上找到這個構造器的原始碼。
via: https://www.benovermyer.com/post/heraldry-pt-1/
作者:Ben Overmyer 譯者:M1seRy 校對:rxcai
本文由 GCTT 原創編譯,Go語言中文網 榮譽推出
本文由 GCTT 原創翻譯,Go語言中文網 首發。也想加入譯者行列,為開源做一些自己的貢獻嗎?歡迎加入 GCTT!
翻譯工作和譯文發表僅用於學習和交流目的,翻譯工作遵照 CC-BY-NC-SA 協議規定,如果我們的工作有侵犯到您的權益,請及時聯絡我們。
歡迎遵照 CC-BY-NC-SA 協議規定 轉載,敬請在本文中標註並保留原文/譯文連結和作者/譯者等資訊。
文章僅代表作者的知識和看法,如有不同觀點,請樓下排隊吐槽
291 次點擊