最近在做游戏服务器中技能模块,往往要扫描一个区域,判断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 Point
{float x;float y;Point(float x,float y){this->x = x;this->y = y;}
};
// 计算 |p1 p2| X |p1 p|
float GetCross(Point& p1, Point& p2,Point& p)
{return (p2.x - p1.x) * (p.y - p1.y) -(p.x - p1.x) * (p2.y - p1.y);
}
//判断点是否在5X5 以原点为左下角的正方形内(便于测试)
bool IsPointInMatrix(Point& p)
{Point p1(0,5);Point p2(0,0);Point p3(5,0);Point p4(5,5);return GetCross(p1,p2,p) * GetCross(p3,p4,p) >= 0 && GetCross(p2,p3,p) * GetCross(p4,p1,p) >= 0;//return false;
}
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{while(true){Point testPoint(0,0);cout << "enter  the point :" << endl;cin >> testPoint.x >> testPoint.y;cout << "the point is  : "<< testPoint.x << " "<< testPoint.y << endl;cout << "the point is " << (IsPointInMatrix(testPoint)? "in the Matrix .": "not in the matrix ." )<< endl;}return 0;
}

如何判断一个点在矩形内相关推荐

  1. PHP判断一个点在矩形区域什么位置

    原文地址 https://xiegaosheng.com/post/view?id=77 PHP判断一个点在矩形区域什么位置:随便标记一个点就生成点的上下最有区域的id: 首先需要准备区域表fgare ...

  2. 如何判断一个点在多边形内

    一.从三角形开始说起---怎么判断一个点在三角形内 三角形是最简单的多边形了.先说说三角形有哪些判断方法. 参考自:判断一个点是否在三角形内部 - 知乎 几种方法判断平面点在三角形内_独L无二的博客- ...

  3. 判断点是否在一个矩形内

    判断是否在矩形内: 只需要判断该点是否在上下两条边和左右两条边之间就行. 判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180 ...

  4. UE4之判断点是否在矩形内

    向量点乘的几何意义 向量点乘的数学定义: 向量点乘的几何意义: 所以向量的点乘可以用来计算两个向量之间的夹角.当夹角在0-90度之间,值为正数,在90-180之间,为负数 利用向量点乘计算点在矩形内 ...

  5. 判断一个点在三角形内

    http://www.gimoo.net/t/1505/5557e812d7390.html 判断点是否在三角形内 本文只是翻译和整理,原文在此http://www.blackpawn.com/tex ...

  6. 如何判断一个点在矩形或多边形内

    先说一下,两个方法均是js实现,均是转载自其他大佬的文章,地址贴在下面 我最近接了个单子,里面有很多大棚,要求鼠标进入大棚范围高亮,我试过网上很多方法.大多不准确,或者说不适合有很多矩形.多边形的这种 ...

  7. 如何优雅的判断一个数字在一个范围内

    告诉你一个范围假如数字1-10 java中有没有一个好的方法判断7在不在这个范围呢 public static boolean rangeInDefined(int current, int min, ...

  8. 一个n*m矩形内正方形和长方形的个数

    正方形的个数为n*m+(n-1)*(m-1)+....,直到n或m有一个为1,.以n=2,m=3为例,即正方形个数为2*3+1*2: 长方形个数为(m+(m-1)+...+1)*(n*(n-1)+.. ...

  9. python内点法_python射线法判断一个点在图形区域内外

    # -*-encoding:utf-8 -*- # file:class.py # """ 信息楼 0 123.425658,41.774177 1 123.425843 ...

最新文章

  1. linux 回环接口实现,Linux回环接口-----(loop-back/loopback)
  2. python 格式化字符串_Python字符串三种格式化输出
  3. 鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...
  4. php-fpm的重启
  5. python shutil_Python shutil模块
  6. Disney牵手联想发布AR头显,还有配备激光剑的AR游戏《星球大战》
  7. 如何提高大数据分析的效果
  8. A Survey of Transformers论文解读
  9. 最新人生感悟语句摘选
  10. 孪生网络图像相似度_Siamese network 孪生神经网络一个简单神奇的结构
  11. Axure制作微信APP原型(二)登录注册模块
  12. 史上最全linux内核配置--Device drivers
  13. 如何将XML转换为HL7
  14. 用友T+改成IIS-网站报500.19错误代码0x8007000d问题解决
  15. 为什么计算机连不上无线网络,笔记本无线连不上是什么原因_为什么笔记本电脑连不上wifi-win7之家...
  16. html怎样调节字间距,css怎么调整字间距?
  17. [Migrated]榜样
  18. python自动华 (十八)
  19. 90.pygame游戏-玩个球(play the ball)最终版
  20. [Oracle] 书写历史的甲骨文――ORACLE公司传奇

热门文章

  1. java实现网上在线支付--13java在线支付所有源码
  2. Hadoop中NameNode和SecondaryNameNode、NN和2NN工作机制、Fsimage和Edits解析、oiv查看Fsimage、oev查看Edits、CheckPoint时间设置
  3. 【独立版】智创云享3107、易搜资料1.4.3、变现宝1.2.4最新版
  4. css月亮和星星卡通效果
  5. C语言程序-循环结构(2)
  6. C#调用WSDL接口
  7. 大数据面试通关手册|Flink面试题(一)
  8. ​WiFi一键连:秒连亿万优质热点,餐饮、娱乐、候机轻松连
  9. Kstry框架一种服务编排的实现
  10. 这瓜保熟吗——二分类结果的混淆矩阵与查准率、查全率