ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

判断点是否在矩阵内

2020-02-28 16:37:29  阅读:403  来源: 互联网

标签:p2 p3 判断 node p4 是否 矩阵 p1 include


判断点是否在矩阵内

题意:
给出四个点p2(x1, y1)为最左的点,p3(x2, y2)为最上的点,p1(x3, y3)为最下的点,p4(x4, y4)为最右的点。给定4个点代表的矩形,再给定一个点p(x, y),判断p(x, y)是否在矩形中

(其中p1,p2,p3,p4的命名是我自己为了方便命名的,主要是按照顺时针方向进行的命名)

题解:
可以利用叉乘或者点乘来判断
在这里插入图片描述
(图片转载于:https://blog.csdn.net/faithmy509/article/details/82803646

于是代码如下:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<sstream>
#include<string>
#include<queue>
#include<vector>
#include<set>
#include<stack>
#include<map>
#define lowbit(x) x&(-x)
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const double pi=3.14159;
const int maxn=1e5;
const int mod=1e3;
struct node{
    double x,y;
};
node p1,p2,p3,p4;
node p;
double getCross(node p1,node p2,node p){
    return (p2.x-p1.x)*(p.y-p1.y)-(p.x-p1.x)*(p2.y-p1.y);
}
int main(){
    cin>>p2.x>>p2.y;
    cin>>p3.x>>p3.y;
    cin>>p1.x>>p1.y;
    cin>>p4.x>>p4.y;
    cin>>p.x>>p.y;

    if(getCross(p1,p2,p)*getCross(p3,p4,p)>=0&&getCross(p2,p3,p)*getCross(p4,p1,p)>=0){
        printf("Yes\n");
    }
    else{
        printf("No\n");
    }
}

algorithmLB 发布了131 篇原创文章 · 获赞 41 · 访问量 1万+ 私信 关注

标签:p2,p3,判断,node,p4,是否,矩阵,p1,include
来源: https://blog.csdn.net/boliu147258/article/details/104348667

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有