서로 교차하는 동일한 반지름을 가진 두 개의 원이 있는데, 그중 하나를 X 및 Y 값으로 이동하여 한 지점에서만 교차하도록해야합니다 (더 이상 서로 위에 있지 않도록). 원 중 하나를 이동해야하는 X와 Y를 계산하는 방법은 무엇입니까?
한 가지 방법은 겹침이 감지 될 때 각 원을 다른 원에서 멀리 이동하는 것입니다.
두 중심 사이의 거리는 두 반지름의 합보다 작지만 각 원을 다른 원에서 조금 멀리 이동합니다 .
# r0, r1, epsilon, Scalars representing radii and a small value
# c0, c1, center Points
# ((c1 - c0) / |c1 - c0|) normalized c0c1 vector away from c1
# ((c0 - c1) / |c1 - c0|) normalized c0c1 vector away from c0
while (r0 + r1) > |c1 - c0|:
c0 = c0 + ((c1 - c0) / |c1 - c0|) * epsilon
c1 = c1 + ((c0 - c1) / |c1 - c0|) * epsilon
편집 : 편리한 산술을위한 예제 클래스 Point (python) :
class point:
def __init__(self, x, y):
self.x = x
self.y = y
def __sub__(self, other) -> Vector:
return Vector(self.x - other.x, self.y - other.y)
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다