如何判断一个点在一个矩形里边,已知点和矩形的坐标点位置。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断一个点在一个矩形里边,已知点和矩形的坐标点位置。相关的知识,希望对你有一定的参考价值。

如果这两个点为矩形的对角顶点且矩形的边平行于坐标轴,那么一个点在该矩形内等价于:
该点的横坐标位于两个已知点的横坐标之间,纵坐标位于两个已知点的纵坐标之间。
如果没有其他条件,两点无论如何也确定不了一个矩形的,自然无法判断。
希望回答对你有帮助。
参考技术A pt1
第一点坐标
;;:
pt0
基点坐标
,其他情况在矩形的外面。
下面附一段AutoCAD
LISP代码,但愿对你有帮助。
;;参数通过已知点矩形对角线顶点形成的角度差来判断,如果差值在大于90度且小于270度,则点在矩形内部,如果角度差等于90度或270度,则已知点在矩形的边上;;;;;
pt2
第二点坐标
;计算三点间角度差
;;;;
;

C语言怎么判断4个坐标坐标是不是构成矩形?

C语言判断4个坐标坐标是否构成矩形

代码:

#include <stdio.h>


typedef struct

        double x;

        double y;

point;



int is_rectangle(point a,point b,point c,point d)

        int ab_y = a.y - b.y;

        int ab_x = a.x - b.x;

        int cd_y = c.y - d.y;

        int cd_x = c.x - d.x;

        // 首先判断ab是否平行于cd

        if (ab_x == 0 || cd_x == 0)

                if(ab_x != cd_x)

                        return 0;

               

        else

                if(ab_y/ab_x != cd_y/cd_x)

                        return 0;

               

       



        // 再判断ab是否等于cd

        if(ab_y*ab_y + ab_x*ab_x != cd_y*cd_y + cd_x*cd_x)

                return 0;

       


        // 然后判断ab是否垂直于ac

        int ac_y = a.y - c.y;

        int ac_x = a.x - c.x;

        if(ab_x == 0 )

                if(ac_y != 0)

                        return 0;

        else if(ac_x == 0)

                if(ab_y != 0)

                        return 0;

        else if((ac_y/ac_x)*(ab_y/ab_x) != -1)

                return 0;

       

        return 1;


int main()

        printf("输入4个坐标值:\\n");

        point a,b,c,d;

        scanf("%lf %lf",&a.x,&a.y);

        scanf("%lf %lf",&b.x,&b.y);

        scanf("%lf %lf",&c.x,&c.y);

        scanf("%lf %lf",&d.x,&d.y);

        if(is_rectangle(a,b,c,d))

                printf("能构成矩形\\n");

        else

                printf("无法构成矩形\\n");

       

        return 0;

运行结果:

                              

参考技术A

你好,步骤如下:

    计算4个点的重心,然后依次对4个坐标排序,排序方式最简单的就是按每个点与重心的向量角进行点排序。

    排序好后依次计算每相邻三个点构成的两条直线是否垂直,也是求向量夹角。

    4个夹角都在90±5°内就是矩形了,精度你可以自己把握。

参考技术B 找到4个向量,两两互相垂直,用向量点积判断。
也可以用两组互相平行,向量成比例,加上一组互相垂直。
参考技术C 设四个点d1(x1, y1), d2(x2, y2), d3(x3, y3), d4(x4, y4)
然后利用勾股定理:
if((x1-x4)^2+(y1-y4)^2+(x2-x1)^2+(y2-y1)^2 ==
(x3-x2)^2+(y3-y2)^2+(x3-x4)^2+(y3-y4)^2)
printf("是矩形\n");本回答被提问者和网友采纳
参考技术D 判断四个点是否重重,计算中点的位置,然后判断中点到四个点的距离是否相等

以上是关于如何判断一个点在一个矩形里边,已知点和矩形的坐标点位置。的主要内容,如果未能解决你的问题,请参考以下文章

平面坐标系中 如何判断某一点在一矩形区域内?

C++编程!已知矩形,判断输入的点是不是包含在该矩形内。

C语言怎么判断4个坐标坐标是不是构成矩形?

如何判断一个点在旋转后的矩形中

怎么判断当前坐标是不是在矩形内(外)部

急急!!! 输入四组坐标判断是不是组成为矩形 C++