Pythonのsympyパッケージを使って交点をもとめます。
返り値を普通の値に戻します。
sympyを使います。
そのなかのgeometryをつかいます。
なのでsympyのパッケージをインストールしてください。
anacondaつかってるなら最初から入ってます。たぶん。
import sympy.geometry as sg center = sg.Point(5,5) radius = 2 circle = sg.Circle(center, radius) line = sg.Line( sg.Point(0,0), sg.Point(10,10)) segment = sg.Segment( sg.Point(0,0), sg.Point(5,5)) result1 = sg.intersection(circle, line) result2 = sg.intersection(circle, segment)
segmentは線分。result1に円と線、result2に円と線分の交点が入ってます。
説明なしでもなんとなくわかるね。
中身を見てみると
>>> result1 [Point(-sqrt(2) + 5, -sqrt(2) + 5), Point(sqrt(2) + 5, sqrt(2) + 5)] >>> result2 [Point(-sqrt(2) + 5, -sqrt(2) + 5)]
結果はリストで返ってきます。解が2つ以上ある場合があるからですね。
ここまでは他のサイトにも載ってた気がします。
ここからが問題。この謎の文字列?を普通の値に変える方法が分からなかった。
で、ある人から教えてもらいました。こうすればいいです
>>> float(result1[0].x) 3.585786437626905 intなら >>> int(result1[0].x) 3