吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1489|回复: 8
收起左侧

[Java 转载] 判断圆与图像是否相交

[复制链接]
炮娘 发表于 2021-8-19 23:46
给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回 True ,否则返回 False 。换句话说,请你检测是否 存在 点 (xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。输入:radius = 1, x_center = 0, y_center = 0(圆的半径  下,有,轴坐标), x1 = 1, y1 = -1, x2 = 3, y2 = 1  (X1,Y1为矩形左下角坐标,x2,y2为右上角坐标)输出:true解释:圆和矩形有公共点 (1,0)


public class checkOverLap {

    public static void main(String[] args) {
        checkOverLap checkOverLap = new checkOverLap();
        System.out.println(checkOverLap.souluteTool(1,1,1,1,2,-3,-1));
    }


    public boolean souluteTool(int radius, int x, int y, int x1, int x2, int y1, int y2) {
        // 1. 判断哪一点到圆心最近
        double distance = 10 * 10 * 10 * 10;
        for (int i = x1; i <= x2; i++) {
            for (int k = y1; k <= y2; k++) {
                int distance1 = Math.abs(x-i) * Math.abs(x-i) + Math.abs(y-k) * Math.abs(y-k);
                double distance2 = Math.sqrt(distance1);

                if (distance2<+distance){
                    distance=distance2;
                }
            }
        }
        // 最近的距离如果小于圆的半径 则相交
         if(distance<= radius){
             return true;
         }
         return false;


    }
}

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
xiangyujayfun + 1 + 1 此为违规行为,请遵守论坛版规!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

艾莉希雅 发表于 2021-8-19 23:59
转换成以圆心极坐标系看点有没有比圆长度短的或者是直角坐标系直接把点带入看看有没有侵入圆
马云爱逛京东 发表于 2021-8-20 01:48
老衲不怕和尚 发表于 2021-8-20 09:09
quinMiaoMiao 发表于 2021-8-20 09:46
学习一下
zd404039009 发表于 2021-8-20 10:12
恕我直言,这论坛迟早把沙雕CSDN弄死
ciker_li 发表于 2021-8-20 10:15
juxing.png
我觉得你这个方法效率有点低,步长是1,误差大
这个题就几种情况,判断一下比穷举快一些
1,圆心在矩形内,ture
2,圆心在矩形外,且x_c+r<x1 or y_c+r<y1 or x_c-r > x2 or y_c-r>y2, false
3, 圆与部分矩形相交,这个稍复杂些,就是写的多点,但肯定比穷举快

 楼主| 炮娘 发表于 2021-8-20 16:02
ciker_li 发表于 2021-8-20 10:15
我觉得你这个方法效率有点低,步长是1,误差大
这个题就几种情况,判断一下比穷举快一些
1,圆心在矩形 ...

对  我最快想到的是这个 但是效率太低  属于暴力流
 楼主| 炮娘 发表于 2021-8-20 16:05
艾莉希雅 发表于 2021-8-19 23:59
转换成以圆心极坐标系看点有没有比圆长度短的或者是直角坐标系直接把点带入看看有没有侵入圆

可以分情况  如果圆心在内直接返回 return true

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 01:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表