绘制到透明画布并检查点是否透明比检查点是否在复杂多边形中要慢多少?

时间:2012-10-20 22:40:24

标签: javascript html5 canvas

说实话,这更像是一个普遍的问题,只是想知道是否有人对这个问题进行了任何研究。

基本上我正在为我自己创建的小型游戏引擎添加事件支持。我希望像素完美悬停在2d对象事件支持上,我只想到最好的方法。实际上,对于我个人而言,仅仅将我的对象绘制到透明画布上并检查鼠标x y是否在透明像素上是否会更快,因为我不必创建一组定义对象外部的点。这也可以让我在我的物体上留下洞,它仍然可以正确地知道我是否徘徊过。

我想知道的是使用此处显示的方法:How can I determine whether a 2D Point is within a Polygon?

我的方法对那里显示的方法要慢多少?

我目前还在学习,所以我不容易实现所有这些,只是自己测试一下,因为我可能需要很长时间才能正常工作并测试速度。

旁注:我仍然会有一个基本的边界框来保存每次重绘和测试。

1 个答案:

答案 0 :(得分:0)

检查某个点是否在多边形中,99.999999%的时间会大大加快。

要慢一点,多边形需要非常复杂。

要执行另一种方法,您需要使用getImageData,并且在画布上获取图像数据非常慢。

多边形算法中的点执行正确地考虑了洞。确保你有一个服从non-zero winding number rule,因为这是画布使用的(而不是奇怪的规则),你可能想要与画布中构建的路径兼容(现在或以后)。