直线的区域裁减算法
首先我们先看图:
在这个图中,直线AB在被中间这个区域所裁减,那么我们如何去判断直线在区域的什么位置,只有这样我们才能知道如何去计算。
因此这个算法首先就是给直线的端点进行编码,根据编码就可以确定直线的位置,这样就可以使用解析几何的算法进行直线的裁减。
但是在图中,直线AB并不是和一个边界相交,那么出现这样的情况,就是反复的裁剪编码,直到直线在这个区域内。
例如B点的话,第一次根据编码裁剪到和右边线的交点上,然后再进行编码,裁减到和底线相交的地方,这样在进行编码的时候,就为0。即认为在区域内。
源码:
// 核心算法
其实这里的直线编码算法 ,不但可以在这里应用 ,而且在图形任意切割的时候,首先用比图片略大的区域进行直线的裁剪,然后在对直线的两个端点进行编码,编码之后就可以确定直线和图片相交的位置,比如直线是水平线的话,那么就应该垂直扫描,这样才能取出两张图片,如果是向上图AB那样,就可以确定是水平扫描了。当然一切皆可用!