Вот, попробуйте это:
function q56099751
data = [3.95, 13.83, 4.12
2.77, 15.34, 5.85
4.41, 14.66, 5.548 ];
x = data(:,1);
y = data(:,2);
z = data(:,3);
% Scatter:
figure(); scatter3(x,y,z,'filled'); hold on;
% Planes:
extents = zeros(3,2);
[extents(1,1), extents(1,2)] = bounds(x);
[extents(2,1), extents(2,2)] = bounds(y);
[extents(3,1), extents(3,2)] = bounds(z);
% extents = extents .* [0.9 1.1]; % See what happens when you uncomment this
for ind1 = 1:numel(x)
planesThroughPoint(x(ind1), y(ind1), z(ind1), extents , [1 1 0]);
end
function planesThroughPoint(ptX, ptY, ptZ, extents, whichPlane)
if whichPlane(1)
% XY Plane
XYZ = [extents(1,1) extents(2,1) ptZ
extents(1,2) extents(2,1) ptZ
extents(1,2) extents(2,2) ptZ
extents(1,1) extents(2,2) ptZ];
patch( XYZ(:,1), XYZ(:,2), XYZ(:,3), 'r', 'FaceAlpha', 0.2);
end
if whichPlane(2)
% XZ Plane
XYZ = [extents(1,1) ptY extents(3,1)
extents(1,2) ptY extents(3,1)
extents(1,2) ptY extents(3,2)
extents(1,1) ptY extents(3,2)];
patch( XYZ(:,1), XYZ(:,2), XYZ(:,3), 'g', 'FaceAlpha', 0.2);
end
if whichPlane(3)
% YZ Plane
XYZ = [ptX extents(2,1) extents(3,1)
ptX extents(2,2) extents(3,1)
ptX extents(2,2) extents(3,2)
ptX extents(2,1) extents(3,2)];
patch( XYZ(:,1), XYZ(:,2), XYZ(:,3), 'b', 'FaceAlpha', 0.2);
end
Несколько примеров того, что может генерировать этот код (в зависимости от того, как вы его настроили):
Если вы хотите, чтобы самолеты проходили только одну точку, не используйте петлю, а вместо этого предоставьте правильные XYZ
координаты для planesThroughPoint
.