cocos2dx判断一个点是否在一个三角形内
最近在用cocos2dx开发游戏的过程中需要判断一个点是否在一个三角形内,网上找了一遍没有找到很简单的方法。于是我就想着仿造cocos2dx种的Rect矩形类写一个Trilateral三角形类,主要功能就是用来判断点是否在三角形内。
首先说一下我的思路:要判断一个点在不在三角形内,只需判断这个点是否在三角形三个顶角内就行了。那么问题就直接转化成如何判断一个点是否在一个角内?假设有:点P和∠ABC,我们只需判断∠ABP和∠CBP都小于∠ABC就能得出点P在∠ABC内。
理论依据有了,剩下的就是实践了
首先我写了一个平面向量类
至于为什么写这个类,往后面看就知道了
然后就是这次的主角三角形类
如上图,函数containsPoint就是判断入参点P是否在这个类对象三角形中。
根据向量公式
可以得出每个角的角度,这也是我上面写平面向量类的原因。
总结:把点是否在三角形之中转化成了点是否在某个角内,然后利用向量公式求出所有自己需要用的角度,通过比较大小得出结论。
能力有限,如有什么错误,欢迎大家指出一起进步。