수면<파동을 무시할수준 , 화면을 꽉채우는 수평선이라고 가정 하였을때>
수면이 가지는 화면상의 높이값 y 가 100 이라고 합시다.
물방울 <완벽한 원형이라고 가정하였을때>
물방울의 중점 x좌표, y좌표, 물방울의 반지름 radius가 존재합니다.
이때
if( 물방울.y + 물방울.radius >= 수면.y ){
/* 안드로이드 화면상 view의 원점은 좌측 상단이므로
중점에 반지름을 "+" 하여 수면과의 높이를 비교합니다.
물방울의 중점 y에 반지름 raius를 더한다는것은 물방울의 가장 아랫쪽 y값을 의미합니다.
그렇게 계산한 y값이 수면.y와 같거나 넘었을때<뷰기준으로 물방울이 수면을 넘어있거나 접함>
원과 선이 접했음을 의미하므로 충돌했다고 볼 수 있습니다.
화면상 수면의 폭<width>이 전체가아닌 일정부분에 속하거나
물방울.x가 수면의 폭을 벗어날 경우의 수가 존재한다면 ,
수면.leftX 수면.rightX 두점과 물방울.x를 비교하여 처리해야합니다.
뷰의 전체폭이 수면폭과 같고 물방울의 x값이 뷰의 폭을 벗어나지 않는다면
x값은 비교하실 필요 없습니다.*/
// 충돌 O
}
else{
// 충돌 X
}
이건 사실상 선과 원의 충돌입니다.
수면의 높이에 큰 파도같은 변형변수들이 크게 존재하고 물방울 역시 원형과 거리가 먼 경우
(세밀한 충돌처리를 요구하는경우) 에는 윗방식은 비추천입니다!