Переменная p
определяет точку на плоскости.Однако, поскольку p
генерируется случайным образом с использованием p = 10*(rand(3,1) - 0.5);
, то, вообще говоря, координата z этой точки не равна 0 (как указывал @JAC).
Мне не понятно, почему вы случайногенерируя (и затем вычитая 0,5) точку, а не просто устанавливая p = [0 0 0]
, но предполагая, что у вас есть веская причина для этого, просто установите для p (3) значение 0, как в приведенном ниже адаптированном коде.
figure(1);
valor1 =[ valor(1,1) valor(1,2) 0; valor(2,1) valor(2,2) 0;0 0 0]; %adjusted matrix to run cross
v1 = valor1(:,1);
v1 = v1 / norm(v1) ; %normalized vectors
v2 = valor1(:,2);
v2 = v2 / norm(v2 ) ;
p = [10*(rand(2,1) - 0.5); 0]; %point on the plane with z=0
v3 = cross(v1,v2); %cross product
[ x , y ] = meshgrid( p(1)+(-5:5) , p(2)+(-5:5) ); %the limits of the plane
z = p(3) - (v3(1)*(x-p(1)) + v3(2)*(y-p(2)))/v3(3); %plane equation
surf(x,y,z) %graph it all
hold all
z = zeros(size(valor, 1), 1);
quiver3(z, z, z, valor(:, 1), valor(:, 2), z, 0); %plot the vectors entered
hold off
axis equal