포인트가 특정 원 밖에 있으면 점의 중심이 원의 중심을 통과하고 점이 충돌하는 지점으로 이동하려고합니다. 코드 :이 방정식에서 내가 뭘 잘못하고 있니?
def inside_circle(self, pos):
if ((pos[0]-self.pos[0])**2 + (pos[1]-self.pos[1])**2) <= teleport_range**2:
return "inside"#pos
else:
pente = (pos[1]-self.pos[1])/(pos[0]-self.pos[0])
origine = pos[1]-pente*pos[0]
A = pente**2 + 1
B = 2 * -self.pos[0] + (origine+self.pos[1])*pente*2
C = self.pos[0]**2 + (origine+self.pos[1])**2 - teleport_range**2
if pos[0] > self.pos[0]:
X = (-B + math.sqrt(B**2 - 4*A*C))/(2*A)
Y = pente * X + origine
return "outside bot"#(X,Y)
elif pos[0] < self.pos[0]:
X = (-B - math.sqrt(B**2 - 4*A*C))/(2*A)
Y = pente * X + origine
return "outside top"#(X,Y)
self.pos은 원의 중심은, POS는 점 I 싶어 검사이고, 모두가 (그 프랑스어 미안에)
pente이 라인의 경사입니다 튜플에게 있습니다입니다
origine 시험용 주석
teleport_range 내가 원하는 일정 300
실제 반환되는 반경이다 (프랑스어) 라인의 Y의 원점 보내고 목적
는 원 내부 everythings 괜찮지 만 외부 경우가 루트에게 부정적인
X = (-B + 수학을 정사각형하려고하기 때문에 오류가 표시 만약 내가 그것을 실행
.sqrt (B ** 2 - 4 * A * C))/(2 * A) ValueError : 수학 영역 오류2 차 방정식의 제곱근은 라인 사이에 충돌 지점이 없을 때만 음수입니다. 원은 원의 중심과 한 점을 지나치므로 두 개의 충돌 점이 있어야합니다. 나는 라인이 일정하지만 난 해결됩니다 경우에만 충돌 한 지점이있을 수있어
이 나는 이유 (B ** 2-4 * A * C는) 이해할 때 야해 때 음수
I을 누군가가 나를 도와 줘요 수 있다면, 또한 코드가 명확
감사합니다 :) 여기
"해야 할 때"- 가정을 확인하십시오. – duffymo
저는 아무도 끔찍하게 이름 붙여진 변수들을 풀어서 시간을 보내고 싶어하지 않을 것이라고 생각합니다. – Alexander
예 죄송합니다. 내 변수를 잊어 버렸습니다. 프랑스어로 :/ – Tissuebox