Muse-CGH icon indicating copy to clipboard operation
Muse-CGH copied to clipboard

关于算法实现

Open bilibiliou opened this issue 8 years ago • 2 comments
trafficstars

Hi , 虽然您已经open Source了 但能否提供一个 关于该算法的剖析 或是 相关论文的link。

有兴趣 研究 使用 js + canvas 转为 web 版本,并增加新功能(哥特 或 其他体)

不胜感激

bilibiliou avatar Jan 18 '17 05:01 bilibiliou

Hi,

  • 该算法的大致思路是用一系列三次Bezier曲线来表示每个字母,Bezier曲线可视为一个Double参数t到二维点的映射(t->Vec2)。因为字母书写时有粗细变化,所以每段曲线还需要提供配套的一个Thickness函数(t->Thickness)。每个字母用Muse自带的字体编辑器可以设计一个模板,然后该算法在渲染这些字体时负责将这些模板拼接成一个个单词。拼接时大体思路是将前一个字母的最后一段和后一个字母的第一段合并成新的一段。渲染时先计算好单词所对应的曲线,再将这些带粗细的曲线用一系列四边形绘制出来。
  • 目前还没有相关的论文
  • 我觉得转成web版本应该是可行的,不过用js的话得重复实现很多复杂的逻辑。Scala.js也许是一种更省事的方案,但性能可能会是个问题。不过目前算法花在绘制四边形上的时间似乎比计算这些曲线更长。
  • 字体的话这个算法一开始就是考虑的用来绘制圆体,如果是其他类似风格的字体应该问题不大。(比较圆滑,容易连接)

MrVPlusOne avatar Jan 18 '17 05:01 MrVPlusOne

ok , 待我研究一下

bilibiliou avatar Jan 20 '17 07:01 bilibiliou