判断凸四边形_外积

通过向量外积的正负号可以判断两个向量的相对位置和夹角,进而用于解决如何辨别凸多边形的问题。在四边形ABCD中,计算相邻边的外积,如AB×BC、BC×CD、CD×DA和DA×AB,如果所有外积符号相同,那么该四边形为凸四边形。此方法也可应用于LeetCode的469题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两个向量的外积定义:

a = (x1, y1)  b = (x2, y2)

a ✖️ b = x1y2-x2y1

https://www.cnblogs.com/xiaojianliu/p/9964246.html

具体参见上面博客。通过外积正负号,可以判定两个向量的相对位置,也就是夹角。

夹角的性质,可以用来解决判别凸多边形,一个点在多边形内等问题。

例如:判别凸多边形:

 向量每个点相连接,假如是多边形ABCD,则得到AB,BC,CD,DA四个向量,分别判定

AB* BC

BC*CD

CD*DA

DA*AB

四个叉乘同不同号,如果同号,证明是凸四边形。leetcode469

class Solution {
public:
    bool isConvex(vector<vector<int>>& points) {
        int n = points.size();
        int xa, ya, xb, yb, xc, yc;
        int prevsign = 0;
        for(int i=0; i<n; i++){
            xa = points[i][0];
            ya = points[i][1];
            xb = points[(i + 1) % n][0];
            yb = points[(i + 1) % n][1];
            xc = points[(i + 2) % n][0];
            yc = points[(i + 2) % n][1];
            int cur = (xc
7-12 点线形系列4-四边形的计算 分数 70 作者 蔡轲 单位 南昌航空大学 用户输入一组选项和数据,进行与四边形有关的计算。 以下四边形顶点的坐标要求按顺序依次输入,连续输入的两个顶点是相邻顶点,第一个和最后一个输入的顶点相邻。 选项包括: 1:输入四个点坐标,判断是否是四边形、平行四边形判断结果输出true/false,结果之间以一个英文空格符分隔。 2:输入四个点坐标,判断是否是菱形、矩形、正方形,判断结果输出true/false,结果之间以一个英文空格符分隔。 若四个点坐标无构成四边形,输出"not a quadrilateral" 3:输入四个点坐标,判断是凹四边形(false)还是四边形(true),输出四边形周长、面积,结果之间以一个英文空格符分隔。 若四个点坐标无构成四边形,输出"not a quadrilateral" 4:输入六个点坐标,前两个点构成一条直线,后四个点构成一个四边形或三角形,输出直线与四边形(也可能是三角形)相交的交点数量。如果交点有两个,再按面积从小到大输出四边形(或三角形)被直线分割成两部分的面积(不换行)。若直线与四边形或三角形的一条边线重合,输出"The line is coincide with one of the lines"。若后四个点不符合四边形或三角形的输入,输出"not a quadrilateral or triangle"。 后四个点构成三角形的情况:假设三角形一条边上两个端点分别是x、y,边线中间有一点z,另一顶点s: 1)符合要求的输入:顶点重复或者z与xy都相邻,如x x y s、x z y s、x y x s、s x y y。此时去除冗余点,保留一个x、一个y。 2) 不符合要求的输入:z 不与xy都相邻,如z x y s、x z s y、x s z y 5:输入五个点坐标,输出第一个是否在后四个点所构成的四边形(限定为四边形,不考虑凹四边形)或三角形(判定方见选项4)的内部(若是四边形输出in the quadrilateral/outof the quadrilateral,若是三角形输出in the triangle/outof the triangle)。如果点在多边形的某条边上,输出"on the triangle或者on the quadrilateral"。若后四个点不符合四边形或三角形,输出"not a quadrilateral or triangle"。 输入格式: 基本格式:选项+":"+坐标x+","+坐标y+" "+坐标x+","+坐标y。点的x、y坐标之间以英文","分隔,点与点之间以一个英文空格分隔。 输出格式: 基本输出格式见每种选项的描述。 异常情况输出: 如果不符合基本格式,输出"Wrong Format"。 如果符合基本格式,但输入点的数量不符合要求,输出"wrong number of points"。 注意:输出的数据若小数点后超过3位,只保留小数点后3位,多余部分采用四舍五入规则进到最低位。小数点后若不足3位,按原始位数显示,不必补齐。例如:1/3的结果按格式输出为 0.333,1.0按格式输出为1.0 选项1、2、3中,若四边形四个点中有重合点,输出"points coincide"。 选项4中,若前两个输入线的点重合,输出"points coincide"。 输入样例1: 选项1,点重合。例如: 1:-1,-1 -1,-1 1,2 1,-2 输出样例: 在这里给出相应的输出。例如: points coincide 输入样例2: 不符合基本格式。例如: 1:-1,-1 1,2 -1,1 ++1,0 输出样例: 在这里给出相应的输出。例如: Wrong Format 输入样例3: 选项1,输入点数量不对。例如: 1:-1,-1 -1,2 输出样例: 在这里给出相应的输出。例如: wrong number of points 输入样例4: 选项1,正确输入判断。例如: 1:-1,-1 -1,1 1,2 1,-2 输出样例: 在这里给出相应的输出。例如: true false 输入样例5: 选项2,输入点不构成四边形。例如: 2:10,10 1,1 0,0 1,20 输出样例: 在这里给出相应的输出。例如: not a quadrilateral 输入样例6: 选项2,正方形。例如: 2:0,0 0,80 80,80 80,0 输出样例: 在这里给出相应的输出。例如: true true true 输入样例7: 选项2。例如: 2:0,0 -10,80 0,160 -10,80 输出样例: 在这里给出相应的输出。例如: not a quadrilateral 输入样例8: 选项3,四边形。例如: 3:-1,-1 -1,1 1,2 1,-2 输出样例: 在这里给出相应的输出。例如: true 10.472 6.0 输入样例9: 选项3,。例如: 3:0,0 -10,100 0,99 10,100 输出样例: 在这里给出相应的输出。例如: false 221.097 990.0 其余样例,详见附件: 点线形系列4-四边形题目说明.pdf 代码长度限制 50 KB 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB
最新发布
07-07
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值