Draw the sphere to find the radius of the sphere
7 views (last 30 days)
Show older comments
I want to fit a 3D sphere, and my goal is to find the radius of the sphere. Knowing the coordinates of some points on the sphere (x,y,z,), which function should I use to quickly draw a sphere and know its radius?
Accepted Answer
John D'Errico
on 3 Feb 2023
Estimation of the sphere parameters is not too difficult. First, since you have shown no data, I'll make some up.
XYZ = randn(50,3); XYZ = XYZ./sqrt(sum(XYZ.^2,2));
XYZ = 2.5*XYZ + [1 3 5] + randn(size(XYZ))/20;
plot3(XYZ(:,1),XYZ(:,2),XYZ(:,3),'o')
axis equal
grid on
box on
xlabel 'X'
ylabel 'Y'
zlabel 'Z'
The result should be a sphere of radius 2.5, centered at the point [1 3 5].
You can use the tool I attached called spherefit.
[C,R] = spherefit(XYZ)
As you can see, the code recovered the original parameters well enough. Now, to plot the sphere...
fimplicit3(@(x,y,z) (x - C(1)).^2 + (y - C(2)).^2 + (z - C(3)).^2 - R.^2)
hold on
plot3(XYZ(:,1),XYZ(:,2),XYZ(:,3),'ro')
axis equal
grid on
box on
xlabel 'X'
ylabel 'Y'
zlabel 'Z'
hold off
I could have built a surface directly, perhaps using meshgrid. But fimplicit3 is just too easy.
3 Comments
John D'Errico
on 4 Feb 2023
That is a completely different question, significantly different from what you asked and I answered. You will first need to use image processing tools, identifying the pixels on that perimeter. But then you still cannot easily convert a picture of the outline of a sphere into a sphere, since the picture lacks depth information. Anyway, I don't do image processing.
More Answers (0)
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
