Modern X Tech. Chinese Translation Project
[[an_insider_s_guide_to_cairo]]
Last edit on Mar 17, 2006 7:27 PM by findsun

原文地址: http://cworth.org/~cworth/papers/cairo_ddc2005/
翻译人员:findsun

1. 什么是cairo

  • 2D绘图函数库
  • 显示和打印输出
  • 多后端 (backend)
  • 为加速而架构

2. 渲染模式

源 掩码(mask) 经过掩码over运算之后的源


3. 穿过甲虫的腹部

  • 笔画绘制(stroking)
  • 镶嵌(tessellation)
  • 光栅化(rasterization)
  • 合成(compositing)



4. 笔画绘制



5. 笔画绘制如此困难么?

  • postscript 并非总是正确地渲染它
  • inkspace 也不是总能正确地渲染它

6. 笔画如此困难么?

  • postscript 并非总是正确地渲染它
  • inkspace 也不是总能正确地渲染它
...
  • 即使 cairo 也不能总是正确地处理它

7. 三次贝塞尔(Bezier)样条曲线

  • 被广泛理解的图元(primitive)
  • 许多令人喜爱的特性
    • 容易分解(decompose)
    • 其边界为控制点所组成的凸多边形外壳
  • 但是无法准确地表示园弧

8. deCastlejau算法



9. 找到三个中心点



10. 找到新的两个中心点



最终的中心点位于样条曲线上



11. 两个*子*样条曲线显露出来



12. 让我们尝试笔画绘制




13. 现在简化画笔(pen)



14. 哦,漂亮的颜色



15. ...但是丑陋的拐角肿块



16. 首先近似样条



17. 有进步了么?



18. 清理一下



19. 然后加入画笔的形状



20. 镶嵌

  • 鲁棒的实现绝非易事
  • John Hobby提供了所有的答案
    • 具有有限精度输出的实用分段交叉. 计算几何理论与应用, 13(4), 1999
  • 初步的原型正在开发中

21. 夹角的情况



22. 不精确的交叉点



23. 容差的方



24. 正确的结果



25. 光栅化/合成

  • 最初代码的编写只用了不到一天时间
  • 现在得到了越来越多的关注
  • 感谢Soren, google等