博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【编程题目】圆形是否和正方形相交☆
阅读量:4361 次
发布时间:2019-06-07

本文共 692 字,大约阅读时间需要 2 分钟。

第 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个值。写不出代码,太繁琐了。

网上的答案,非常值得学习。

 先要做平移,然后用下面的代码,(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;

 

转载于:https://www.cnblogs.com/dplearning/p/3975148.html

你可能感兴趣的文章
Android关于buildToolVersion与CompileSdkVersion的区别
查看>>
袋鼠云日志,日志分析没那么容易
查看>>
缓存穿透 缓存雪崩 缓存并发
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>
Linux下启动/关闭Oracle
查看>>
session和cookie的区别
查看>>
alert弹出窗口,点击确认后关闭页面
查看>>
oracle问题之数据库恢复(三)
查看>>
单点登陆(SSO)
查看>>
HR,也确实“尽职尽责”
查看>>
MaxComputer 使用客户端配置
查看>>
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>
SpringCloud+feign 基于Springboot2.0 负载均衡
查看>>
【BZOJ5094】硬盘检测 概率
查看>>
大庆金桥帆软报表案例
查看>>
Proxy模式
查看>>