ポイントが特定の円の外にある場合、ポイントは円の中心を通り、ポイントが衝突するポイントに移動するようにしようとしています。コード:この式で何が間違っているのですか?
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両方が
連珠ライン(そのフランス語申し訳ありません)での傾きであるタプルであり、点Iとたいチェックがある場合、POSは、円の中心であります
原産地は、ラインのYの原点である(フランス語も)
teleport_rangeは半径で、私が欲しい定数300
実際のリターンをテストするためにコメントされていますINGの目的
それは円の内側、何もかも大丈夫ですが、それは外であれば、根に負
X =(-B +数学を二乗しようとしているため、エラーが表示場合、私は、それを実行
(2 * A) ValueError:数学的なドメインエラー2次方程式の平方根は、線の間に衝突点がない場合にのみ負の値になりますしかし、円は、円の中心と点を通るので、2つの衝突点があるはずです。 Iラインは一定であるが、私は修正するときにのみ衝突点が存在することを知って
そのなぜ(B ** 2から4 * C)が理解するとき、それははずのとき負である
Iを誰かが私を助けてくださいことができれば、また、コードが明快
感謝:)ここ
"それはしないでください" - あなたの前提を確認してください。 – duffymo
誰もがひどく名前のついた変数のスルーを解読する時間を費やしたくないと思います。 – Alexander
はい私はそれを変えました申し訳ありません、私の変数のいくつかを忘れてどこフランス語:/ – Tissuebox