Draw the sphere to find the radius of the sphere
1 次查看(过去 30 天)
显示 更早的评论
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?
采纳的回答
John D'Errico
2023-2-3
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 个评论
John D'Errico
2023-2-4
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.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!