Python:确定圆心和半径的循环回归

2024-04-20 06:46:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我跟随this tutorial计算给定三个点(x,y)坐标的中心和半径。我已经编写了下面的python代码,但是我得到的h和k值仍然是矩阵,所以我想知道如何根据该教程计算这两个值:

import numpy as np
from math import *

last_point = (2, -4)
second_last_point = (6, -2)
third_last_point = (5, 5)

points = []
points.append(last_point)
points.append(second_last_point)
points.append(third_last_point)


h_numerator = []
h_denominator = []

k_numerator = []

for index in range(len(points)):
    current_point = points[index]

    h_denominator.append([current_point[0], current_point[1], 1])
    h_numerator.append([current_point[0] ** 2 + current_point[1] ** 2, current_point[1], 1])

    k_numerator.append([current_point[0], current_point[0] ** 2 + current_point[1] ** 2, 1])



h_numeratorMatrix = np.matrix(np.array(h_numerator))
denominatorMatrix = np.matrix(np.array(h_denominator))

k_numeratorMatrix = np.matrix(np.array(k_numerator))


h = h_numeratorMatrix / (2. * denominatorMatrix)
k = k_numeratorMatrix / (2. * denominatorMatrix)

print 'h=', h
print 'k=', k

Tags: importnpcurrentarraymatrixpointspointlast
1条回答
网友
1楼 · 发布于 2024-04-20 06:46:15

您错过了教程中的一个小细节:

The simplest forms of these involve determinants

你正在尝试对矩阵进行除法(h = h_numeratorMatrix / (2. * denominatorMatrix)) 因此,计算hk的正确代码如下:

h = np.linalg.det(h_numeratorMatrix) / (2. * np.linalg.det(denominatorMatrix))
k = np.linalg.det(k_numeratorMatrix) / (2. * np.linalg.det(denominatorMatrix))


附笔。 这部分代码

^{pr2}$

可以改为:

for current_point in points:
    ...

相关问题 更多 >