zoukankan      html  css  js  c++  java
  • 判断点是否在三角形内的方法

    一、调用API。

    BOOL PtInRegion(
      HRGN hrgn,  // handle to region
      int X,      // x-coordinate of point
      int Y       // y-coordinate of point
    );
    
    HRGN CreatePolygonRgn(
      CONST POINT *lppt,  // array of points
      int cPoints,        // number of points in array
      int fnPolyFillMode  // polygon-filling mode
    );
    
    

    二、

    设三角形为ABC  所判断点为P  area表示面积函数

    判断area(PAB)+area(PAC)+area(PBC)-area(ABC)与0关系

    大于0  则在三角形外部

    等于0  则在三角形内部 

    三、

    设三角形三个点
    A(a1,a2),B(b1,b2),C(c1,c2)
    三条边方程
    BC:fa(x,y)=0
    AC:fb(x,y)=0
    AB:fc(x,y)=0
    以BC为例,在三角形内的点必须与点A在BC的同侧
    所以对于点D(x,y)
    在三角形内首先要满足fa(x,y)*fa(a1,a2)>0
    其他边也同理
    所以只要比较
    fa(x,y)*fa(a1,a2)
    fb(x,y)*fb(b1,b2)
    fc(x,y)*fc(c1,c2)
    这三个数的正负性
    1三个数都是正数:D在三角形内
    2至少有一个负数:D在三角形外
    3有且只有一个0,另两个为正数:在三角形边上
    4有且只有一个0,一个正数一个负数:在三角形边的延长线上,也算在三角形外,因为满足2
    5有二个0:在三角形的顶点上
    6不可能出现3个0,或3个负数,或一个0两个负数的情况

  • 相关阅读:
    ClassLoader机制:一个类何时会被虚拟机初始化?
    单例模式(含多线程处理)
    代理模式
    Java反射机制深度剖析
    python3.8、3.9安装
    日常随手记
    redux源码阅读之compose,applyMiddleware
    Chrome字体变粗
    JavaScript遍历树结构
    JavaScript 通过队列实现异步流控制
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1633810.html
Copyright © 2011-2022 走看看