【发布时间】:2019-05-12 10:50:00
【问题描述】:
我的意思是下面两张图片的组合:
我需要超平面通过第 3 行中的点。我想出了一些代码,但它根本没有显示任何平面。
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);
pointA = [4.4, 14.7, 5.5];
pointB = [4.4, 14.7, 5.5];
pointC = [4.4, 14.7, 5.5];
pointD = [4.4, 14.7, 5.5];
normal = cross(pointA-pointB, pointA-pointC)
A = normal(1); B = normal(2); C = normal(3);
D = -dot(normal,pointA);
zLim = [min(z) max(z)];
yLim = [min(y) max(y)];
[Y,Z] = meshgrid(yLim,zLim);
X = (C * Z + B * Y + D)/ (-A);
reOrder = [1 2 4 3];
figure();patch(X(reOrder),Y(reOrder),Z(reOrder),'r');
grid on;
alpha(0.3);
hold on
plot3(x,x,z, '.', 'markersize', 30);
知道如何解决这个问题吗?
【问题讨论】:
-
如果你想要 "vertical" 和 "horizontal" 平面,你不需要找到平面的法线(法线已经笛卡尔坐标系的主要单位向量...)。同样在您的示例中,您的
pointA到PointD都是相同的,当您计算您的normal时,您期望什么?
标签: matlab plot data-visualization polygon scatter-plot