cocos2dx判断一个点是否在一个三角形内

最近在用cocos2dx开发游戏的过程中需要判断一个点是否在一个三角形内,网上找了一遍没有找到很简单的方法。于是我就想着仿造cocos2dx种的Rect矩形类写一个Trilateral三角形类,主要功能就是用来判断点是否在三角形内。

首先说一下我的思路:要判断一个点在不在三角形内,只需判断这个点是否在三角形三个顶角内就行了。那么问题就直接转化成如何判断一个点是否在一个角内?假设有:点P和∠ABC,我们只需判断∠ABP和∠CBP都小于∠ABC就能得出点P在∠ABC内。

理论依据有了,剩下的就是实践了

首先我写了一个平面向量类

cocos2dx判断一个点是否在一个三角形内至于为什么写这个类,往后面看就知道了

然后就是这次的主角三角形类

cocos2dx判断一个点是否在一个三角形内cocos2dx判断一个点是否在一个三角形内

如上图,函数containsPoint就是判断入参点P是否在这个类对象三角形中。

根据向量公式cocos2dx判断一个点是否在一个三角形内

可以得出每个角的角度,这也是我上面写平面向量类的原因。

总结:把点是否在三角形之中转化成了点是否在某个角内,然后利用向量公式求出所有自己需要用的角度,通过比较大小得出结论。

能力有限,如有什么错误,欢迎大家指出一起进步。