首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >矩形交点。打印空交叉点的消息

矩形交点。打印空交叉点的消息
EN

Stack Overflow用户
提问于 2018-05-28 06:38:39
回答 2查看 197关注 0票数 1

我有四个坐标: x,y,width=w,height=h,我有两个矩形,坐标如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r1.x=2,r1.y=3,r1.w=5,r1.h=6; 
r2.x=0, r2.y=7,r2.w=-4,r4.h=2

你如何观察这个交叉点是空的。

到目前为止,我所做的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rectangle intersection (rectangle r1, rectangle r2){
r1.x=max(r1.x,r2.x);
r1.y=max(r1.y,r2.y);
r1.w=min(r1.w,r2.w);
r1.h=min(r1.h,r2.h);
return r1;
}

我认为上面的代码是在有交叉口的时候使用的,但是当交叉口是空的时候我就不知道了。另外,当没有交叉点时,我想打印一条消息"empty“。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-05-28 07:24:57

当用矩形的宽度和高度表示矩形时,用于矩形相交的方法不起作用。

如果你存储矩形的两个相对的角(而不是一个角和尺寸),并确保第一个角的坐标总是小于或等于第二个角,那么它可以有效地存储矩形的min_xmin_ymax_xmax_y

我建议您采用这样的约定,即确保矩形始终包含它们的min坐标,并且始终排除它们的max坐标。

票数 0
EN

Stack Overflow用户

发布于 2018-05-28 08:08:26

假设你有一些与以下内容没有太大区别的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct rectangle {
    int x;
    int y;
    int w;
    int h;
};

(或者使用floatdouble而不是int)

我将在这里假设wh始终为正,如果它们可能为负,您应该首先标准化输入矩形以确保它们为负。

找到交叉点的方法是找到它的对角点,并确保左下角在右上角:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rectangle intersection(const rectangle& r1, const rectangle& r2) {
    // optionaly control arguments:
    if (r1.w < 0 || r1.h < 0 || r2.w < 0 || r2.h < 0) {
        throw std::domain_error("Unnormalized rectangles on input");
    }
    int lowx = max(r1.x, r2.x);    // Ok, x coordinate of lower left corner
    int lowy = max(r1.y, r2.y);    // same for y coordinate

    int upx = min(r1.x + r1.w, r2.x + r2.w)  // x for upper right corner
    int upy = min(r1.y + r1.h, r2.y + r2.h)  // y for upper right corner

    if (upx < lowx || upy < lowy) {      // empty intersection
        throw std::domain_error("Empty intersection");
    }
    return rectangle(lowx, lowy, upx - lowx, upy - lowy);
}

可以通过强制宽度和高度为正值来规格化矩形:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rectangle& normalize(rectangle& r) {
    if (r.w < 0) {
        r.x += r.w;
        r.w = - r.w;
    }
    if (r.h < 0) {
        r.y += r.h;
        r.h = -r.h;
    }
    return r;
}

然后,您可以在第二个函数中使用它来显示交集结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void display_intersection(std::outstream out, rectangle r1, rectangle r2) {
    try {
        rectangle inter = intersection(normalize(r1), normalize(r2));
        out << "(" << inter.x << ", " << inter.y << ") to (";          
        out << inter.x + inter.w << ", " << inter.y + inter.h << ")" << std::endl;
    }
    except (std::domain_error& e) {
        out << "empty" << std::endl;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50560470

复制
相关文章
条码打印软件里绘制圆角矩形
条码打印软件可以绘制多种图形,比如三角形、矩形、圆角矩形、圆形、菱形和五角星等。使用者就可以根据自己的需求在软件中设计出符合自己需要的标签。下面就给大家演示绘制圆角矩形的方法。
神奇像素科技
2021/11/19
1.1K0
条码打印软件里绘制圆角矩形
Python助力中学数学教学:绘图验证反比例函数与矩形交点的关系
昨天下午,我正在看书,娃过来说“老爸,考你个数学题看你会不会啊”,我一想不过是九年级的数学题而已,岂能难的倒我,于是欣然答应。
Python小屋屋主
2020/03/19
9170
Python助力中学数学教学:绘图验证反比例函数与矩形交点的关系
使用操作系统异常巧妙获取交叉链表的交点
step 1: 使用两个指针指向两链表头,分别从头拨到尾,统计两个链表到终点的步数分别为 d1, d2。
轩辕之风
2020/03/11
3430
C++ OpenCV透视变换改进---直线拟合的应用
前一篇《C++ OpenCV透视变换综合练习》中针对透视变换做了一个小练习,上篇中我们用多边形拟合的点集来计算离最小旋转矩形最近的点来定义为透视变换的点,效果是有,无意间又想了一个新的思路,在原来的点的基础上效果会更好一点,其中就用到了直线拟合的方法,今天这篇就说一下优化的思路及直线拟合的函数。
Vaccae
2021/01/20
1.4K0
C++ OpenCV透视变换改进---直线拟合的应用
iOS Quartz2D相关方法
View内部有个layer(图层)属性,drawRect:方法中取得的是一个Layer Graphics Context,因此,绘制的东西其实是绘制到view的layer上去了
码客说
2019/10/22
6550
链表相交,找交点
力扣题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci
代码随想录
2021/12/22
8210
链表相交,找交点
最小的矩形
牛牛在二维坐标系中画了N个点,且都是整点。现在牛牛想画出一个矩形,使得这N个点都在矩形内或者在矩形上。 矩形的边均平行于坐标轴。牛牛希望矩形的面积最小。请你帮助牛牛计算下最小矩形的面积。 输入描述: 首先输入一个正整数N表示点的个数(2 <= N <= 50)
AI那点小事
2020/04/20
8970
最大的矩形
问题描述 试题编号: 201312-3 试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。
geekfly
2022/05/06
4830
用Gaussian寻找圆锥交叉点
圆锥交叉(conical intersection, CI)简言之是指两个态的势能面交叉的地方,此时两个态的能量简并。在圆锥交叉区域,体系可以从激发态以无辐射形式回到基态。关于圆锥交叉的更深入的理论细节可参考Conical intersections: theory, computation and experiment一书。此外,点击文末“阅读原文”可打开一份非常不错的关于光化学计算的讲义。如果打开速度较慢,可在留言区的百度网盘链接获得。
用户7592569
2020/09/10
5K0
求两个链表的交点
已知链表A的头节点指针headA,链表B的头节点指针headB,两个链表相交,求两链表交点对应的节点。 [](LeetCode 160)
小飞侠xp
2018/08/29
9090
矩形的个数
在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形。 给出A,B,计算可以从中找到多少个矩形。
书童小二
2018/09/03
7910
链表相交,找出交点
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/
代码随想录
2021/06/17
7510
微信朋友圈“空”消息的H5模拟
昨天和大家简单介绍了微信朋友圈空信息的原因后,不少朋友都在问如果在H5中出现这个问题怎么办,或者如果这样回来带什么问题,于是就有了本篇文章。
TestOps
2022/04/07
1.7K0
微信朋友圈“空”消息的H5模拟
76 - 小矩形覆盖大矩形
1. 可以用2×1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种覆盖方法?请用递归的方式实现 斐波那契数列的应用 def rectCover1(number): if number == 0: return 0 elif number == 1: return 1 elif number == 2: return 2 else: return rectC
ruochen
2021/06/14
6030
76 - 小矩形覆盖大矩形
利用Reduce函数求两曲线的交点
如何利用Mma解决数学问题的问题~~该很多喜爱数学的初学者比较关注的问题,无论是高等数学还是初等数学,Mma都做出了最给力的回应~~下面这个问题是利用Reduce函数求两曲线的交点: 代码:
WolframChina
2018/05/31
5930
空对象和空的对象
空对象:表面内部不包含任何属性和方法的对象,比如var obj={}就是一个空对象
十月梦想
2018/08/29
1.3K0
python 求直线交点坐标
参考:http://blog.csdn.net/abcjennifer/article/details/7584628
py3study
2020/01/03
2.6K0
Android:自绘动画实践—以 Tencent OS 录音机波形为例
这几天因为毕业之类的七七八八的事情有些日子没写博客了,刚好近日看到了Bugly发布的一篇关于自绘动画的博客《Android自绘动画实现与优化实战——以Tencent OS录音机波形动画为实例》,写的非常有深度但可惜没有放出源码,惊叹之余便有了亲自造个轮子的想法。
青蛙要fly
2023/06/09
8420
Android:自绘动画实践—以 Tencent OS 录音机波形为例
[剑指offer] 矩形覆盖
我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 * 1的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?
尾尾部落
2018/09/04
1.1K0
空与非空:浅谈非空约束的影响
黄玮(Fuyuncat) 资深Oracle DBA,个人网www.HelloDBA.com,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 非空约束是字段的一个重要属性。但是,很多时候,数据库表的设计人员似乎并不十分在意这个属性。最常见的现象就是,除了主键字段外,所有字段都不指定该属性。而在Oracle中,默认是允许为空。 而实际上,优化器在选择执行计划时,非空约束是一个重要的影响因素。为了说明问题,我们建立以下测试表,然后分别说明非空约束在各种情况下对执行计划和性能的影响。 谓词评
数据和云
2018/03/06
3.2K0
空与非空:浅谈非空约束的影响

相似问题

XNA矩形交点

20

Java矩形交叉点

21

圆弧和矩形的交点

14

直线和矩形的交点

20

映射交点(公共矩形区域)

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文