zoukankan      html  css  js  c++  java
  • 【编程题目】圆形是否和正方形相交☆

    第 23 题(算法):
    用最简单,最快速的方法计算出下面这个圆形是否和正方形相交。"
    3D 坐标系 原点(0.0,0.0,0.0)
    圆形:
    半径 r = 3.0
    圆心 o = (*.*, 0.0, *.*)
    正方形:
    4 个角坐标;
    1:(*.*, 0.0, *.*)
    2:(*.*, 0.0, *.*)
    3:(*.*, 0.0, *.*)
    4:(*.*, 0.0, *.*)

    思路:

    自己分类讨论了一下,需要计算四个角到圆心的距离大于半径,且四条边到圆心的距离大于半径。需要计算8个值。写不出代码,太繁琐了。

    网上的答案,非常值得学习。http://bbs.csdn.net/topics/330232890

     先要做平移,然后用下面的代码,(dx1,dx2)总是正方形中距离圆心最近的点。

    //将矩形中心置于原点(坐标(0, 0),不在原点的可做平移),矩形的长、宽分别为w、h。圆为动圆,圆心坐
    //标为 (ox,oy),圆半径为r。则判断圆与矩形是否相交:
    bool Collision(int ox, int oy, int w, int h, int r)
    {
        int dx = min(ox, w * 0.5);
        int dx1 = max(dx, -w*0.5);
    
        int dy = min(oy, h * 0.5);
        int dy1 = max(dy, -h * 0.5);
    
        return (dx1 - ox) * (dx1 - ox) + (dy1 - oy) * (dy1 - oy) <= r * r;
  • 相关阅读:
    类继承
    抽象基类 纯虚函数
    虚函数
    Java网络通信
    Java补补补
    刷LeetCode吧
    贝叶斯网络的
    vscode添加vue模板
    vue--项目实例
    Java01
  • 原文地址:https://www.cnblogs.com/dplearning/p/3975148.html
Copyright © 2011-2022 走看看