我是靠谱客的博主 轻松麦片,最近开发中收集的这篇文章主要介绍Objective-C 判断两个矩形是否相交,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题定义:定义一个矩形类,实现判断矩形是否相交的方法。

思路:给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,即矩形(P1,P2)与(P3,P4),判断两矩形是否相交。如下图所示,首先求出P1与P3点在X方向较大值与Y方向较大值的交点,在下图中就是P3,用红点(记为M点)表示。然后求出P2与P4点在X方向较小值与Y方向较小值的交点,在下图中就是P2,用橙色点(记为N点)表示。如果M点的X坐标和Y坐标值均比N点相应的X坐标和Y坐标值小,亦即M和N可以分别构成一个矩形的左上角点和右上角点,则两矩形相交;其余情况则不相交。

01165312-e31340b5153448d2a02a10dd82de62d2.png01170805-2e6a26fef97c4e1ca7104664a2e5c589.png01171401-cde500e2eefc4319a3c63c484d820f62.png

WFRect

#import <Foundation/Foundation.h>


@interface WFRect : WFShape


@property (nonatomic,assigndouble width;

@property (nonatomic,assigndouble height;



+ (instancetype) rectWithX : (double) x

                         y : (double) y

                      width: (double) width

                     height: (double) height;


- (instancetype)initWithX : (double) x

                        y : (double) y

                     width: (double) width

                    height: (double) height;

@end



WFRect.m

#import "WFRect.h"


@implementation WFRect


+(instancetype)rectWithX:(double)x

                       y:(double)y

                  width:(double)width

                  height:(double)height{

    return [[self allocinitWithX:x y:y width:width height:height];

}


- (instancetype)initWithX:(double)x

                        y:(double)y

                   width:(double)width

                    height:(double)height{

    if (self = [super init]) {

_x = x;

_y = y;

        _width = width;

        _height = height;

    }

    return self;

}


-(BOOL) intersects:(WFRect *) other{

    double redX = _x > other.x ? _x : other.x;

    double redY = _y > other.y ? _y : other.y;

    double yellowX = _x + _width < other.x + other.width ?_x + _width : other.x + other.width;

    double yellowY = _y + _height < other.y + other.height ? _y +_height : other.y + other.height;

    return (yellowX > redX && yellowY > redY);

}

@end

最后

以上就是轻松麦片为你收集整理的Objective-C 判断两个矩形是否相交的全部内容,希望文章能够帮你解决Objective-C 判断两个矩形是否相交所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部