|
发表于 2007-10-6 02:31:00
|
显示全部楼层
Re: [求助]我数学差,请问怎么计算一个圆是否和矩形相交?
高效,精确的方法
将矩形扩展为圆角矩形,然后判断圆心是否在圆角矩形内,步骤如下
圆心C,半径为r,矩型的两条边VA,VB
1 计算两条边长,val,vbl
2 作出矩型的两条中轴线LA,LB,其中LA垂直于VA,LB垂直于VB
val/2和vbl/2既为矩型的顶点到LA,LB的距离
3 计算圆心C到LA,LB的距离cal,cbl
4 如果 cal<=val/2 and cbl<=vbl/2 则相交
(圆心在矩型中)
5 如果 cal<=val/2+r and cbl<=vbl/2 or cal<=val/2 and cbl<=vbl/2+r 则相交
(圆心在矩型外,但圆与矩型相交)
6 如果 cal<=val/2+r and cbl<=vbl/2+r 则进一步判断
(圆心在矩型外,并且圆心在矩型的顶点外)
4-6 可以合并为
如果 cal>val/2+r or cbl>vbl/2+r 则不相交
如果 cal<=val/2 or cbl<=vbl/2 则相交
7 cal-=val/2,cbl-=vbl/2,如果 cal^2+cbl^2<=r^2 则相交
(判断圆是否与矩型的顶点相交)
|
|