1

老实说,这更像是一个笼统的问题,只是想知道是否有人对此主题进行过任何形式的研究。

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

我想知道的是使用此处显示的方法:如何确定 2D 点是否在多边形内?

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

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

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

4

1 回答 1

0

检查一个点是否在多边形中将在 99.999999% 的时间内大大加快速度。

为了更慢,多边形需要非常复杂。

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

多边形算法中的点确实可以正确解释孔洞。确保您有一个遵守非零缠绕数规则,因为这是画布使用的(与奇偶规则相反),并且您可能希望与画布中构建的路径兼容(现在或以后)。

于 2012-10-22T04:09:20.093 回答