目标:我们现在需要填充ellipse从而实现太极的描绘。

MFC描绘太极图可以使用Pie进行圆形的填充,但是AGG怎么才能够描绘半圆,然后填充半圆,目前找到的agg::ellipse无法堪此大任。

inline unsigned ellipse::vertex(double* x, double* y)

{

if(m_step == m_num)

{

++m_step;

return path_cmd_end_poly | path_flags_close | path_flags_ccw;

}

if(m_step > m_num) return path_cmd_stop;

double angle = double(m_step) / double(m_num) * 2.0 * pi;

if(m_cw) angle = 2.0 * pi - angle;

*x = m_x + cos(angle) * m_rx;

*y = m_y + sin(angle) * m_ry;

m_step++;

return ((m_step == 1) ? path_cmd_move_to : path_cmd_line_to);

}

目前即使通过修改agg::ellipse的函数代码如上:

修改行:

double angle =double(m_step) / double(m_num) * 1.0 * pi;

描绘一半的角度,只是显示半圆!!

然后能够描绘半圆,并且填充,但是这里有一个问题,半圆的位置需要进行调整,稍微需要根据圆心进行旋转。问题又来了:

上一章节就已经说明对于agg::trans_affine类的rotate函数的旋转,完全无法控制,不知道转到什么地方去了!!!

时间: 2024-12-28 17:53:44

目标:我们现在需要填充ellipse从而实现太极的描绘。的相关文章

JasperReport填充报表6

任何报告工具的主要目的是为了生产出高品质的文档.举报填充过程有助于报告工具通过操纵数据集来实现这一目标.需要报表填充过程的主要输入是: 报表模板:这是实际的JasperReport文件 报告参数:这些所传递的报表填充时间给引擎基本上都是命名的值.我们将在报表参数章节讨论. 数据源:我们可以从一系列像一个SQL查询,XML文件,CSV文件,一个HQL(Hibernate查询语言)查询,Java Beans的集合等数据源的填补Jasper这个文件将详细讨论在报表数据源的篇章. 这个过程产生的输出.j

silverlight中常用的控件

一.布局控件 Canvas面板是一种很基础的布局面板,它支持对其中的控件采用绝对坐标定位.Canvas.Top和Canvas.Left.Canvas.ZIndex附加属性:如果指定了两个控件相对于父容器Canvas同样的边距,则后面声明的控件父覆盖前面声明的控件.这时我们可以使用Canvas.ZIndex属性来改变它们的显示顺序. StackPanel是一种简单的布局面板,它支持用行或列的方式来定位其中包含的控件.StackPanel 常用于安排页面上的一个很小的 UI 部分.默认情况下,Ori

Cesium 概述 (二) 空间数据可视化

                                                              空间数据可视化 Cesium提供Entity API来绘制空间数据,例如点.标记.标签.线.3D模型.形状.立体形状(volume). Entity API简介 Cesium提供两类API: (1)面向图形开发人员的底层API,通常称为"Primitive API".该API暴露最小限度的抽象,使用图形学术语,具有很大的灵活性,需要具有图形学编程的知识 (2)高级

HTML笔记四,HTML5的绘图支持

使用canvas元素,相当于一张空的画布 height:设置画布组件高度 width:设置画布组件宽度 在canvas上绘图三个步骤: ①获取<canvas />元素对应的DOM对象,这是一个Canvas对象 ②调用Canvas对象的getContext(‘2d’)方法,注意d是小写,该方法返回一个CanvasRenderingContext2D对象,该对象即可绘图 ③调用CanvasRenderingContext2D对象的方法绘图 CanvasRenderingContext2D提供的方法

《STL源码解析》读书笔记之allocator(1)

内存配置器allocator是stl中的一个模板类,它提供类型化的内存分配以及释放操作.SGI STL的配置器与众不同,其名称是alloc而非allocator,而且不接受任何参数(如vector<int,std::alloc>).每个SGI STL容器采用的默认内存配置其都是alloc而不是allocator. 首先介绍allocator.SGI中虽然有allocator的定义,但基本上从不用它,原因是效率不高.它仅仅是把c++的new和delete稍微做了一点封装而已(allocate函数

Neteaset News

到了中后期了,新浪微博结束就可以找工作了,坚持住,最困难的一周 前天为了敲网易新闻,一直敲到了快五点,我想丽丽一个女生都那么拼,我怎么不行?知乎上一个哥们虽然年年第一,上台只讲一句话,nothing is inposible 刀哥晚上备课到凌晨3,4点,顺治晚上学到凌晨1-2点,我怎么不行? 下来就看书,当你无助的时候,看看鸡汤文,还是有用的 是什么支撑你搞完项目?不服输,咬牙啃下来,8:30放学我没有再玩手机,马上开始敲代码,我知道任务很重,很多代码,所以拼命敲,遇到困难翻来覆去看,终于敲完了

html常用命名单词

头:header内容:content/container尾:footer导航:nav侧栏:sidebar栏目:column页面外围控制整体布局宽度:wrapper左右中:left right center登录条:loginbar标志:logo广告:banner页面主体:main热点:hot新闻:news下载:download子导航:subnav菜单:menu子菜单:submenu搜索:search友情链接:friendlink页脚:footer版权:copyright滚动:scroll小技巧:t

oracle函数-LPAD/RPAD

基本用法: lpad函数 函数介绍 lpad函数是Oracle数据库函数,lpad函数从左边对字符串使用指定的字符进行填充.从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思. 2语法 语法格式如下: lpad( string, padded_length, [ pad_string ] ) string 准备被填充的字符串: padded_length 填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函

白话比特币原理解密

一.比特币的背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,总是有些问题想不清楚,为了弄清楚这些问题,最近深入的研读了几本比特币的书籍以及中本聪本人发表的比特币论文,感觉茅塞顿开,迫不及待的与大家分享我的理解,希望与大家共同探讨.共同进步. 二.什么是比特币 比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另外一个组织进行在线支付,而不需要中间的权威的清算机构. 在比特币的世界里,如果你想拥有比