2017-05-28 14 views
0

私は、三角形の外接円の中心と半径を取得するには苦労しましたか?2D内の三角形の円で囲まれたもの

I used the 1.5 linear system that is easily computable, however my implementation does not work at all...

を私のコード(Pythonで、利便性のためにnumpyのを使用して)::今のところ、これは不可解な結果を返し

def cercle_circonscrit(T): 
    A = np.array([[x3-x1,y3-y1],[x3-x2,y3-y2]]) 
    Y = np.array([(x3**2 + y3**2 - x1**2 - y1**2),(x3**2+y3**2 - x2**2-y2**2)]) 
    if np.linalg.det(A) == 0: 
     return False 
    Ainv = np.linalg.inv(A) 
    X = 0.5*np.dot(Ainv,Y) 
    x,y = X[0],X[1] 
    r = sqrt((x-x1)**2+(y-y1)**2) 
    return (x,y),r 

...しかし、私がしようとしなかった私がこれまで行ってきた何 上記の式が偽であることを証明する... ありがとう

+0

、などから来ますか?それらは関数のパラメータであるか、パラメータから抽出されるべきです。 – lukess

答えて

0

関数のパラメータとして(x1、y1)などを取得することを忘れた可能性があります。

これは動作するはずです:変数X1、X2、X3ある

import numpy as np 
from math import sqrt 

def cercle_circonscrit(T): 
    (x1, y1), (x2, y2), (x3, y3) = T 
    A = np.array([[x3-x1,y3-y1],[x3-x2,y3-y2]]) 
    Y = np.array([(x3**2 + y3**2 - x1**2 - y1**2),(x3**2+y3**2 - x2**2-y2**2)]) 
    if np.linalg.det(A) == 0: 
     return False 
    Ainv = np.linalg.inv(A) 
    X = 0.5*np.dot(Ainv,Y) 
    x,y = X[0],X[1] 
    r = sqrt((x-x1)**2+(y-y1)**2) 
    return (x,y),r 

T = ((0, 0), (1, 0), (0, 1)) 
cercle_circonscrit(T) 
#--> ((0.5, 0.5), 0.7071067811865476) 
+0

ありがとう!私はそれらを私のコードに入れました(私はここでコードをコピーして間違えてしまいました。コードが完全に機能するので実際にx1、y1などを実際に取得したときに間違えたと思います)。 –

関連する問題