标签:移动 lazy 为什么 api接口 图形 函数定义 中心 旋转 多边形
~~~ 介绍一次API接口定义的探秘过程 ~~~
刚开始看到emwin中关于旋转多边形的接口定义,如下:
API如上所示,函数的第一个形参表示目标-多边形的点集的指针;
函数的第二个参数表示源-多边形的点集的指针;
函数的第三个参数表示点集中点的个数(一般会写源-多边形的点集的点个数);
函数的第四个参数表示旋转角度。
那么问题来了,这个形参列表为什么没指明旋转中心呢?到底这个多边形是绕屏幕上的哪个点旋转了Angle角度呢?
只能看具体的实例了,然后看到它的点集的举例是这样的(一个向下的箭头):
从这里可以看到,点集中的点可能不是基于屏幕的坐标,因为按照屏幕坐标向右向下为正的原则,这里很多点都是在屏幕位置不可见的。
猜测他们是相对于某个相对圆心(0,0)的,而且坐标定义也符合向右向下为正的坐标概念的,也就是说这个点集中的点坐标都是这个圆心的相对位置坐标;
所以绘制出来的填充图像才是一个向下的箭头。
那么,也可大胆假设,旋转多边形时应该也就是基于这个圆心旋转,但是这个圆心在屏幕上的坐标又具体是多少?
然后查看这个图形的绘制函数(填充多边形)是怎么定义的?
果不其然,这个填充多边形的函数定义里,形参除了点集的指针和点集中点的个数外,还有一对XY坐标值。这一对起点坐标XY,应该就是将上面的圆心需要移动到屏幕坐标的位置。
经验证,确实就是这么来的。也就是旋转的时候,基于自己的一套中心坐标进行旋转,然后填充(或绘制)的时候再把上述的位置做坐标映射,将中心坐标移动到具体的屏幕位置处;
标签:移动 lazy 为什么 api接口 图形 函数定义 中心 旋转 多边形
原文地址:https://www.cnblogs.com/asa-ben-clc/p/14755484.html