У меня есть вопрос, касающийся написания java-программы, и часть программы проверяет, перекрываются ли круги или пересекаются ли они в какой-либо точке, и отображает, если они это делают.
Я считаю, что формула для этого: (r1+r2)^2 ‹= (x2-x1)^2+(y2-y1)^2
После применения этой формулы к моему коду она не может определить, перекрываются ли они или пересекаются.
//variables
//crOneRadius = radius of circle 1
//crTwoRadius = radius of circle 2
//crOneCenterX = x axis location of circle 1
//crOneCenterX = y axis location of circle 1
//crTwoCenterX = x axis location of circle 2
//crTwoCenterX = y axis location of circle 2
//BOoverlap = is boolean if it is ovelapping circles set to true
if((crOneRadius+crTwoRadius)*(crOneRadius+crTwoRadius)<=((crTwoCenterX-crOneCenterX)*(crTwoCenterX-crOneCenterX))+((crTwoCenterY-crOneCenterY)*(crTwoCenterY-crOneCenterY)))
BOoverlap=true;//overlap is true
BOverlap
? Я предлагаю вам выделить этот расчет в отдельный метод и протестировать его с другими значениями (вы можете написать тест в методеmain()
, если не хотите использовать JUnit или TestNG). - person aro_tech   schedule 30.11.2015sumOfRadii*sumOfRadii <= deltaX*deltaX + deltaY*deltaY
. Чтобы еще больше улучшить читаемость, вы можете даже написать свой собственный методsquare()
или использоватьMath.pow(x,2)
, давая что-то вродеsquare(sumOfRadii) <= square(deltaX) + square(deltaY)
. - person aro_tech   schedule 30.11.2015