计算圆形是否和正方形相交 【微软面试100题 第二十三题】 - tractorman - 博客园
用最简单、最快捷的方法计算出下面这个圆形是否和正方形相交。
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,*.*)
题目分析:
用圆心到四条边的距离来判断:如果圆心到某一条边的距离小于等于r,且k在该条边上(非延长线).如图所示:
http://blog.csdn.net/chdhust/article/details/11581953
http://www.cnphp6.com/archives/48050
Read full article from 计算圆形是否和正方形相交 【微软面试100题 第二十三题】 - tractorman - 博客园
用最简单、最快捷的方法计算出下面这个圆形是否和正方形相交。
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,*.*)
题目分析:
用圆心到四条边的距离来判断:如果圆心到某一条边的距离小于等于r,且k在该条边上(非延长线).如图所示:
http://blog.csdn.net/chdhust/article/details/11581953
http://www.cnphp6.com/archives/48050
先要做平移,然后用下面的代码,(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;http://blog.csdn.net/ylf13/article/details/12883545
Read full article from 计算圆形是否和正方形相交 【微软面试100题 第二十三题】 - tractorman - 博客园