> restart:
 

> with(plots):with(plottools):with(VectorCalculus):
 

> u1:=<1,1,3>;u2:=<3,1,0>;u3:=<1,3,1>;
 

 

 

u1 := Vector[column](%id = 18446744073913072558)
u2 := Vector[column](%id = 18446744073913982822)
u3 := Vector[column](%id = 18446744073913982974) (1)
 

> display(arrow(<0,0,0>,u1,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,u2,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> w1:=u1/sqrt(u1.u1);
 

w1 := Vector[column](%id = 18446744073913983110) (2)
 

> v2:=u2-(u2.w1)*w1;w2:=v2/sqrt(v2.v2);
 

 

v2 := Vector[column](%id = 18446744073913983382)
w2 := Vector[column](%id = 18446744073913983518) (3)
 

> display(arrow(<0,0,0>,u1,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,u2,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow((u2.w1)*w1,v2,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow((u2.w1)*w1,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> display(arrow(<0,0,0>,u1,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,u2,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,v2,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),arrow((u2.w1)*w1,v2,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow((u2.w1)*w1,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> v3pt1:=(u3.w1)*w1;v3pt2:=(u3.w2)*w2;
 

 

v3pt1 := Vector[column](%id = 18446744073913983790)
v3pt2 := Vector[column](%id = 18446744073913983926) (4)
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),arrow(<0,0,0>,v3pt1,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),arrow(<0,0,0>,v3pt1,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt1+v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> v3:=u3-(v3pt1+v3pt2);
 

v3 := Vector[column](%id = 18446744073913984062) (5)
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),arrow(<0,0,0>,v3pt1,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt1+v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(v3pt1+v3pt2,v3,0.1,0.4,0.2,cylindrical_arrow,color=purple),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> w3:=v3/sqrt(v3.v3);
 

w3 := Vector[column](%id = 18446744073913984198) (6)
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),arrow(<0,0,0>,v3pt1,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt1+v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(v3pt1+v3pt2,v3,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(v3pt1+v3pt2,w3,0.1,0.4,0.2,cylindrical_arrow,color=black),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> display(arrow(<0,0,0>,u3,0.1,0.4,0.2,cylindrical_arrow,color=red),arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),arrow(<0,0,0>,v3pt1,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,v3pt1+v3pt2,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(v3pt1+v3pt2,v3,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(v3pt1+v3pt2,w3,0.1,0.4,0.2,cylindrical_arrow,color=black),arrow(<0,0,0>,v3,0.1,0.4,0.2,cylindrical_arrow,color=purple),arrow(<0,0,0>,w3,0.1,0.4,0.2,cylindrical_arrow,color=black),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

> display(arrow(<0,0,0>,w1,0.1,0.4,0.2,cylindrical_arrow,color=blue),arrow(<0,0,0>,w2,0.1,0.4,0.2,cylindrical_arrow,color=green),implicitplot3d((w1&x w2).<x,y,z> =0,x=-1..3,y=-1..3,z=-1..3,style=surface,color=cyan),arrow(<0,0,0>,w3,0.1,0.4,0.2,cylindrical_arrow,color=black),scaling=constrained,view=[-1..3,-1..3,-1..3]);
 

Plot_2d
 

>