最近在做游戏服务器中技能模块,往往要扫描一个区域,判断npc是不是在我这个区域内,在的话就发伤害。
就需要实现一下,对于一个点是否在矩形内的判断。
只需要判断该点是否在上下两条边和左右两条边之间就行,判断一个点是否在两条线段之间夹着,就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图:
只要判断(p1 p2 X p1 p ) * (p3 p4 X p3 p1) >= 0 就说明p在p1p2,p3p4中间夹着,同理计算另两边就可以了
最后就是只需要判断 (p1 p2 X p1 p ) * (p3 p4 X p3 p1) >= 0 && (p2 p3 X p2 p ) * (p4 p1 X p4 p) >= 0 ;
// ConsoleApplication18.cpp : Defines the entry point for the console application.
//判断一个点是否在矩形内部
#include "stdafx.h"
#include "iostream"
struct