快速坐标定位的问题(详细请进)
小弟在做一个简单的图形填充程序。
现在在做渐变填充。主要功能类似于GDI+中的线性渐变和路径渐变填充。
对于路径渐变填充的想法是这样的:
比如一个路径为一个矩形ABCD,其中心点为O.
我把他们分成4个小三角形来进行填充。就是对角线分开的四个三角形。
现在的问题是,对于每一个位于矩形内的像素,在对其渲染之前,都要判断他是在哪个三角形内?
当然,矩形只是一个特殊的路径,其他的多边形以及椭圆等,其分成的三角形是相当多的。所以需要寻求一个速度非常非常快的算法来判断某点(x,y)位于哪个三角形内。
已经想到的方法是:
1:实现计算出所有三角形围绕中心点的所有角度,然后求出当前点到中心点的斜率后计算其角度,判断落于哪个三角形中。但是在处理每个点的时候都要用atan函数,其效率是相当底的。
2:依次把路径的各个定点和当前点做向量叉乘,每个三角形需要两个向量叉乘。在像素点非常多的情况下,这似乎也太慢了。
所以,请教个位高手,给定一个中心点,以及围绕这个中心点的三角形。
然后在给定点(x,y)的情况下,如何快速判断其位于哪个三角形的角度范围内?
不知偶说清楚没。希望各位理解。谢过个位先。