加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

AGG 坐标转换管道(Coordinate conversion pipeline)

发布时间:2020-05-23 07:59:52 所属栏目:程序设计 来源:互联网
导读:Coordinate conversion pipeline 坐标转换管道 坐标转换管道用于改变顶点源产生的顶点,包括坐标、命令、产生新顶点等。如对顶点进行矩阵变换、插入顶点形成虚线之类的功能。 变换矩阵(trans_affine) 在认识转换管道之前,先了解一下AGG的变换矩阵。通过顶点

成员方法

坐标转换管道中有个叫conv_transform的 转换器,它能利用矩阵对源顶点进行变换,我们先在这里玩玩吧^_^

实验代码(基于此 处代码)

加入头文件 #include "agg_conv_transform.h"

把on_draw()方法的里从“// Vertex Source”到“// Scanline Rasterizer”之间的代码改写成:

  1. // Vertex Source
  2. agg::ellipse ell(0,50,50); //圆心在中间
  3. // Coordinate conversion pipeline
  4. agg::trans_affine mtx;
  5. mtx.scale(0.5,1); // x轴缩小到原来的一半
  6. mtx.rotate(agg::deg2rad(30)); // 旋转30度
  7. mtx.translate(100,100); // 平移100,100
  8. typedef agg::conv_transform<agg::ellipse> ell_ct_type;
  9. ell_ct_type ctell(ell,mtx); // 矩阵变换
  10. typedef agg::conv_contour<ell_ct_type> ell_cc_type;
  11. ell_cc_type ccell(ctell); // 轮廓变换
  12. typedef agg::conv_stroke<ell_cc_type> ell_cc_cs_type;
  13. ell_cc_cs_type csccell(ccell); // 转换成多义线
得到的图形是:

注:trans_affine不 仅仅用于源顶点的变换,在AGG库中有不少地方都能看到它。比如后面会讲到的线段(span)生成器,通过变换矩阵,就能够 自由变换填充于多边形之内的图案。

坐标转换管道

头文件

#include <agg_conv_stroke.h> // conv_stroke
#include <agg_conv_dash.h> // conv_dash
#include <agg_conv_marker.h> // conv_marker
#include <agg_conv_curve.h> // conv_curve
#include <agg_conv_contour.h> // conv_contour
#include <agg_conv_smooth_poly1.h> // conv_smooth_poly1.h
#include <agg_conv_bspline.h> // conv_bspline
#include <agg_conv_transform.h> // conv_transform

类型(演示程序基于基于此处代码)

作者:毛毛 来源:www.cppprog.com

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读