zoukankan      html  css  js  c++  java
  • 判断点是否在一个矩形内

    判断是否在矩形内:

    只需要判断该点是否在上下两条边和左右两条边之间就行。

    判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图

    只要判断(AB X AE ) * (CDX CE)  >= 0 就说明E在AB,CD中间夹着,同理计算另两边DA和BC就可以了。

    最后就是只需要判断

    (AB X AE ) * (CD X CE)  >= 0 && (DA X DE ) * (BC X BE) >= 0 。

    参考代码:

    1     // 计算 |p1 p2| X |p1 p|
    2     function GetCross(p1: Point, p2: Point, p: Point) {
    3         return (p2.x - p1.x) * (p.y - p1.y) - (p.x - p1.x) * (p2.y - p1.y);
    4     }
    5     //判断点p是否在p1p2p3p4的正方形内
    6     function IsPointInMatrix(p1: Point, p2: Point, p3: Point, p4: Point, p: Point) {
    7         let isPointIn = GetCross(p1, p2, p) * GetCross(p3, p4, p) >= 0 && GetCross(p2, p3, p) * GetCross(p4, p1, p) >= 0;
    8         return isPointIn;
    9     }
  • 相关阅读:
    2012年春晚剧本
    研究机器人
    85.圆角边框的两大要素 Walker
    81.边框设置 Walker
    76.背景固定 Walker
    84.边框方向 Walker
    86.圆角边框设置 Walker
    82.边框宽度和边框颜色 Walker
    88.轮廓和样式重置 Walker
    77.背景简写 Walker
  • 原文地址:https://www.cnblogs.com/fangsmile/p/9306510.html
Copyright © 2011-2022 走看看