关于emwin的多边形旋转函数

~~~ 介绍一次API接口定义的探秘过程 ~~~

刚开始看到emwin中关于旋转多边形的接口定义,如下:

技术图片

 

API如上所示,函数的第一个形参表示目标-多边形的点集的指针;

                      函数的第二个参数表示源-多边形的点集的指针;

                      函数的第三个参数表示点集中点的个数(一般会写源-多边形的点集的点个数);

                      函数的第四个参数表示旋转角度。

那么问题来了,这个形参列表为什么没指明旋转中心呢?到底这个多边形是绕屏幕上的哪个点旋转了Angle角度呢?

只能看具体的实例了,然后看到它的点集的举例是这样的(一个向下的箭头):

技术图片

 

 从这里可以看到,点集中的点可能不是基于屏幕的坐标,因为按照屏幕坐标向右向下为正的原则,这里很多点都是在屏幕位置不可见的。

 猜测他们是相对于某个相对圆心(0,0)的,而且坐标定义也符合向右向下为正的坐标概念的,也就是说这个点集中的点坐标都是这个圆心的相对位置坐标;

 所以绘制出来的填充图像才是一个向下的箭头。

 那么,也可大胆假设,旋转多边形时应该也就是基于这个圆心旋转,但是这个圆心在屏幕上的坐标又具体是多少?

 

 然后查看这个图形的绘制函数(填充多边形)是怎么定义的?

技术图片

 

 

     果不其然,这个填充多边形的函数定义里,形参除了点集的指针和点集中点的个数外,还有一对XY坐标值。这一对起点坐标XY,应该就是将上面的圆心需要移动到屏幕坐标的位置。

     经验证,确实就是这么来的。也就是旋转的时候,基于自己的一套中心坐标进行旋转,然后填充(或绘制)的时候再把上述的位置做坐标映射,将中心坐标移动到具体的屏幕位置处;

 

相关文章