Given 3 points in (3D) space: A = (x1, y1, z1), B = (x2, y2, z2) C = (x3, y3, z3); then how to find the center and radius of the circle (arc) that passes through these three points, i.e. find the equation of a circle? Using Python and Numpy is my source code.
import numpy as np A = np.array([x1, y1, z1]) B = np.array([x2, y2, z2]) C = np.array([x3, y3, z3])
From the definition of Circumradius, the radius can be found using:
R = (a * b * c) / np.sqrt(2.0 * a**2 * b**2 + 2.0 * b**2 * c**2 + 2.0 * c**2 * a**2 - a**4 - b**4 - c**4)
However, I am having problems finding the Cartesian coordinates of the center. One possible solution is to use the "barycentric coordinates" of triangular points to search for the trilinear coordinates of a circle ( Circumcenter ).
First ( using this source ) we find the dashed coordinates of the circle:
Then the Cartesian coordinates of the center (P) will be:
Px = (b1 * A[0]) + (b2 * B[0]) + (b3 * C[0]) Py = (b1 * A[1]) + (b2 * B[1]) + (b3 * C[1]) Pz = (b1 * A[2]) + (b2 * B[2]) + (b3 * C[2])
However, the above barcode values do not seem correct. When resolving with an example of known values, the radius is correct, but there is no center coordinate.
Example: for these three points:
A = np.array([2.0, 1.5, 0.0]) B = np.array([6.0, 4.5, 0.0]) C = np.array([11.75, 6.25, 0.0])
Radius and coordinates of the center:
R = 15.899002930062595 P = [13.4207317073, -9.56097560967, 0]
Any ideas on how to find the center coordinates?