Graph a plane spanned by 2 vectors

Asked by Christian on 7 Jun 2012
Latest activity Answered by Teja Muppirala on 8 Jun 2012

I'm having trouble doing this without errors. My code generally works when it's not trying to render vertical or horizontal planes. As of now, there's a workaround that stops it from trying to graph the problem planes, but I'd like to have it work in every case.

      normal = cross (v1,v2);
      origin = [0 0 0];
      starts = zeros(3,3);
      ends = [v1;v2;origin];
      realdot = @(u,v)(u * transpose(v));
      syms x y z
      P = [x,y,z];
      planefunction = realdot(normal, P);
      zplane = solve(planefunction, z);  
      if(isempty(zplane) == 0)
          ezmesh(zplane, [xmin, xmax, ymin, ymax]), hold on
      else
          plane = char(planefunction);
          fprintf('The two vectors create the vertical/horizontal plane %s = 0\n', plane);
      end  

How can I create an expression that the ezmesh function can understand for those flat planes (i.e. x=0)?

I tried using the fill3 function to create a triangular surface with vertices at the origin and each of the vector endpoints, but I could never get that to work either.

Help please.

Thanks!

0 Comments

Christian

Tags

Products

1 Answer

Answer by Teja Muppirala on 8 Jun 2012

The way you are calliing EZMESH inteprets the input as z = f(x,y). So you can't express things like the x=0 plane.

But what you are trying to do can easily be accomplished by using EZMESH to plot a parametric surface, like the following. This code plots the plane spanned by any v1 and v2. See the help for EZMESH.

v1 = randn(3,1);
v2 = randn(3,1);
figure;
hold on;
plot3([0 v1(1)],[0 v1(2)],[0 v1(3)],'k','linewidth',6);
plot3([0 v2(1)],[0 v2(2)],[0 v2(3)],'k','linewidth',6);
ezmesh(@(s,t)v1(1)*s+v2(1)*t,@(s,t)v1(2)*s+v2(2)*t,@(s,t)v1(3)*s+v2(3)*t)

0 Comments

Teja Muppirala

Contact us