码迷,mamicode.com
首页 > Windows程序 > 详细

关于emwin的多边形旋转函数

时间:2021-05-24 05:35:51      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:移动   lazy   为什么   api接口   图形   函数定义   中心   旋转   多边形   

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

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

技术图片

 

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

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

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

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

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

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

技术图片

 

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

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

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

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

 

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

技术图片

 

 

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

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

 

关于emwin的多边形旋转函数

标签:移动   lazy   为什么   api接口   图形   函数定义   中心   旋转   多边形   

原文地址:https://www.cnblogs.com/asa-ben-clc/p/14755484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!