【算法】两矩形相交的判定

某好友近日初学程序设计语言时,问了我如题的问题,他的解法是直接暴力模拟所有的情况,然后再进行判定

思绪良久,其实可以直接判定两个矩形的中心距离,然后判断其是否皆小于两矩形长的和的一半  和  宽的和的一半 即可;

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double x1,x2,x3,x4,y1,y2,y3,y4;
    /*1 左右 2 左右 1 下上 2 下上*/
    double length=0,x1length=0;
    cin>>x1>>x2>>x3>>x4>>y1>>y2>>y3>>y4;
    
    length = sqrt( ( abs(x1+x2-x3-x4)/2 * abs(x1+x2-x3-x4)/2 ) + ( abs(y1+y2-y3-y4)/2 * abs(y1+y2-y3-y4)/2 ) );
    /* calculate length */
    if( ( length<( abs(x2-x1)+abs(x4-x3) )/2 ) && ( length< ( abs(y2-y1) + abs(y4-y3) )/2 ) )
    {
        printf("相交\n");
    }
    else
    {
        printf("不相交\n");
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值