精华内容
下载资源
问答
  • 一个矩形,其四个角的坐标依次为(xa, ya, xb, yb, xc, yc, xd, yd)。 定义一个类——isPointInRect,其函数cross_product用来求由3个组成的两个向量的叉积,函数compute_para用来获取4个参数。 class ...

    有一个point,其坐标为(xp, yp);有一个四边形**(适用矩形或凸四边形;凹四边形不怎么适用我的要求,没测试)**,其四个角点的坐标依次为(xa, ya, xb, yb, xc, yc, xd, yd)。注意此处的“依次”,可逆时针,也可顺时针,一定要保证是依次;否则,增加排序函数。
    定义一个类——isPointInQuadrangle,其函数cross_product用来求由3个点组成的两个向量的叉积,函数compute_para用来获取4个参数。

    class isPointInQuadrangle(object):
    
        def __int__(self):
            self.__isInQuadrangleFlag = False
    
        def cross_product(self, xp, yp, x1, y1, x2, y2):
            return (x2 - x1) * (yp - y1)-(y2 - y1) * (xp - x1)
    
        def compute_para(self, xp, yp, xa, ya, xb, yb, xc, yc, xd, yd):
            cross_product_ab = isPointInQuadrangle().cross_product(xp, yp, xa, ya, xb, yb)
            cross_product_bc = isPointInQuadrangle().cross_product(xp, yp, xb, yb, xc, yc)
            cross_product_cd = isPointInQuadrangle().cross_product(xp, yp, xc, yc, xd, yd)
            cross_product_da = isPointInQuadrangle().cross_product(xp, yp, xd, yd, xa, ya)
            return cross_product_ab,cross_product_bc,cross_product_cd,cross_product_da
    
        def is_in_rect(self, aa, bb, cc, dd):
            if (aa > 0 and bb > 0 and cc > 0 and dd > 0) or (aa < 0 and bb < 0 and cc < 0 and dd < 0):
                print("This point is in the Quadrangle.")
                self.__isInQuadrangleFlag= True
            else:
                print("This point is not in the Quadrangle.")
                self.__isInQuadrangleFlag = False
    
            return self.__isInQuadrangleFlag
    
    if __name__ == '__main__':
        aa, bb, cc, dd = isPointInQuadrangle().compute_para(600, 550, 508, 451, 730, 470, 718, 615, 495, 596)
        print(isPointInQuadrangle().is_in_rect(aa, bb, cc, dd))
    

    输出结果:

    This point is in the Quadrangle.
    True
    

    #原理请参考下方链接。
    #编辑时间仓促,有不妥之处请留言。
    运行本程序前,请确保输入的点是按照顺序排列的。
    本程序的四边形角点坐标需要按照逆时针或者顺时针排列。本程序未考虑角点坐标排序问题,请读者自行补充。

    参考:1.已知四边形的四个点,求一个点是否在四边形之内的解决方法
    2.如何判断一个点在矩形内

    展开全文
  • 判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图 只要判断(AB X AE ) * (CDX CE) >= 0 就说明EAB,CD中间夹着,...

    判断是否在矩形内:

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

    判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了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     }

     

    转载于:https://www.cnblogs.com/fangsmile/p/9306510.html

    展开全文
  • RT,不想自己写那些判断是否有现成的函数呢? c#新手,请多指点~~
  • 判断点是否在矩形内

    2019-11-08 10:55:50
    种方法: if (!(m_nCol >= 150 && m_nRow >= 300) && (m_nCol <= 500 && m_nRow <= 340)) { HBRUSH hbrush;//创建新画刷 hbrush = CreateSolidBrush(RGB(255...

    第一种方法:

    			if (!(m_nCol >= 150 && m_nRow >= 300) && (m_nCol <= 500 && m_nRow <= 340))
    			{
    				HBRUSH hbrush;//创建新画刷
    				hbrush = CreateSolidBrush(RGB(255, 255, 255));
    				hdc = GetDC(hWnd);
    				SelectObject(hdc, hbrush);
    				Rectangle(hdc, 150, 300, 500, 340);
    				DeleteObject(hbrush);
    				TextOut(hdc, 310, 312, L"login", 5);
    			}
    			else
    			{
    				HBRUSH hbrush;//创建新画刷
    				hbrush = CreateSolidBrush(RGB(0, 122, 204));
    				hdc = GetDC(hWnd);
    				SelectObject(hdc, hbrush);
    				Rectangle(hdc, 150, 300, 500, 340);
    				DeleteObject(hbrush);
    				SetBkMode(hdc, TRANSPARENT);
    				TextOut(hdc, 310, 312, L"login", 5);
    			}
    

    第二种方法:

    CRect g_rcLogin{ 150, 300, 150 + 350, 300 + 40 };
    矩形
    CRect g_rcRegist{ 250, 400, 250 + 200, 400 + 40 };
    判断点在不在矩形里面,在里面函数返回非零,继续运行,不在里面,函数返回0,函数不执行(if(0)=false不执行该函数)。
    			if (PtInRect(g_rcLogin, point))
    			{
    				HBRUSH hbrush;//创建新画刷
    				hbrush = CreateSolidBrush(RGB(0, 122, 204));
    				hdc = GetDC(hWnd);
    				SelectObject(hdc, hbrush);
    				Rectangle(hdc, 150, 300, 500, 340);
    				DeleteObject(hbrush);
    				SetBkMode(hdc, TRANSPARENT);
    				TextOut(hdc, 310, 312, L"login", 5)
    
    			}
    
    展开全文
  • MFC中:  [函数原型]  BOOL PtInRect( POINT point ) const throw( );  [声明]  Declare Function PtInRect Lib "user32" ...[说明] 这个函数判断指定的点是否位于矩形lpRect内部  [参数表] p...

    MFC中:  

    [函数原型]  

    BOOL PtInRect( POINT point ) const throw( );  

    [声明]  

    Declare Function PtInRect Lib "user32" (lpRect As RECT, pt As POINTAPI) As Long  

    [说明]  这个函数判断指定的点是否位于矩形lpRect内部  

    [参数表]  point ------------- POINTAPI,欲判断的点  

    [返回值]  Long,非零表示点在矩形内部,零表示点在矩形外部。会设置GetLastError  

    [其它]  如点位于矩形四边之内,或矩形的顶部或左侧边线上,则认为它在矩形内部。如位于矩形的右侧或底部边线,则不认为它在矩形内部

    转载于:https://www.cnblogs.com/swtseaman/archive/2010/12/06/1898376.html

    展开全文
  • 给定4个代表的矩形,再给定一个点(x, y),判断(x, y)是否在矩形中 方法一:旋转 分析 矩阵平行于坐标轴:直接判断(x,y)和矩阵左下、右上的顶点的大小。 矩阵倾斜:将倾斜的矩形旋转,使其平行于坐标轴 代码 ...
  • OpenCV:判断点是否在矩形内

    千次阅读 2019-06-27 10:36:42
    1、点在矩形内 2、点在矩形边界上 3、点在矩形外 #include <opencv2/opencv.hpp> #include <iostream> int main() { //创建图像 cv::Mat srcImage = cv::Mat(240,320,CV_8UC3,cv::Scalar(75,75,...
  • 相关文章列表中,我找到了一个自己之前没听过的词语——影射几何。度娘告诉我,这门学科跟我所谓的“史诗级玩法”似乎有共通之处。也就是说,我拿来装逼的这玩意儿,不过是别人几百年前就玩烂了的一件玩具而已。但...
  • 判断点是否在矩形内部”这样的思路编排的。,首先是定位。先定义6百度坐标,然后坐标上创建对应的marker,再通过map.addOverlay(marker)方法将6marker定位百度地图中,并利用marker....
  • 方法和判断点在矩形中使用的PtInRegion一样,hi.baidu.com/shukunzhang/blog/item/22c91582ed4890b76c811954.html 只是创建HRGN时使用不同的函数既可。 TRGNType = (rtRectangle, rtRoundRectangle, rtElliptic); ...
  • 用js写了一个判断矩形相交的函数

    千次阅读 2017-09-30 21:31:26
    基本思想求两个矩形是否相连或相交,两个矩形的最小外包矩形宽小于两个矩形宽的和,且两个矩形最小外包矩形的的高小于两个矩形高的和,则两个矩形相交。 外包矩形的宽等于两个矩形的y轴最大值减去y轴的最小值。 ...
  • #include "stdafx.h" #include using namespace std; class Point_And_Rectangle { public: Point_And_Rectangle(float X,float Y) //构造函数 { length=X; //长度 width=Y; //
  • 如图所示,黄色的颜料屏是旋转的,如果不做处理直接判断点是否在矩形中,那么点击红点的位置会判定为选中物体。显然这是不对的。 如果物体没有旋转,判断方法就很简单了。 static isPositionInRect(point: cc.Vec2,...
  • 首页 > 数据库 > PostgreSQL ...postgresql 中postgis的使用,查看一个点是否在矩形范围 上一篇:很抱歉没有了 下一篇:postgresql 获取当前时间 ,操作 查看某一个点是否在
  • 题目(2018-11-20) 用一个对象的数据来表示一个矩形的位置和大小: { x: 100, ...请你完成一个函数isOverlap可以接受两个矩形作为参数,判断这两个矩形在页面上是否重叠。例如: const rect1 = ...
  • 弄物体的outline时需要去掉内部某些有边缘区域的outline,这可以根据uv来做,用if影响性能所以用step函数 https://stackoverflow.com/questions/12751080/glsl-point-inside-box-test/37426532 float insideBox...
  • 如何判断一个点是否在多边形内部? (1)面积和判别法:判断目标与多边形的每条边组成的三角形面积和是否等于该多边形,相等则多边形内部。--采纳 (2)夹角和判别法:判断目标与所有边的夹角和是否为360度,...
  • 函数3,判断一个Rect是否在另外一个Rect中。 */ CRect r1 = {{2,6},{10,2}}; CRect r2 = {{3,8},{2,50}}; CPoint p = {3,5}; printf("%d",isIntersection(r1, r2)); return 0; }       ...
  • OpenCV中判断点在矩形中的方法

    千次阅读 2018-10-31 21:00:24
    目录 1.问题 2.思路 3.实现 4.资料 ...如图1.1所示,有红色和蓝色两个,如何判断点相对于...它的作用是判断一个点是否在轮廓中,基本用法如下: C++: double pointPolygonTest(InputArray contour, Point2f p...
  • MFC判断一个点是否在一个区域

    千次阅读 2014-02-15 10:10:23
    1.判断一点是否在矩形区域的方法:  CRect rc (point_1,point_2);//构造矩形区域 调用CRect::PtInRect  BOOL flag = rc.PtInRect(point_key);  if (flag)  {  point_key构造的矩形区域;  } ...
  • C++ 设计一个点类和矩形

    千次阅读 2020-05-23 17:25:01
    1、类 (1)私有成员变量包括x和y,双精度型,表示的横坐标和纵坐标; (2)公有成员函数包括: ·无参数构造函数(缺省构造函数),将坐标设为(0,0);...·判断是否是正方形函数 ·显示函数,用于显示矩
  • 描述:判断点与图形的位置关系 题目描述: 以(point)类为...派生类操作判断任一坐标图形,还是图形的边缘上,还是图形外。缺省初始化图形退化为。要求包括拷贝构造函数。编程测试类设计是否正确。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,637
精华内容 20,254
关键字:

判断一个点是否在矩形内函数