load (draw); load (vector_rebuild); listarith : true; doallmxops : true; A : [2,0,0]; C : [0.8,0.5,2.5]; B : [1,2,0.5]; nullp : [0,0,0]; /* n ist der Normalenvektor der Ebene nullp, A, B */ n : A~B; /* f n*C / |n| */ /* f ist die Länge der Projektion von C auf n */ f : lsum(i,i,maplist("*",n,C)) / |n|; /* NC ist der Lotpunkt des Lotes von C auf n */ NC : n*f/|n|; str1 : strim("\"", string("set label '{/=25 @_{/=25 a}^{/=15 ->}}' at ")); label1 : concat (str1, A[1]+0.2, ",", A[2], ",", A[3]); /**/ str2 : strim("\"", string("set label '{/=25 @_{/=25 b}^{/=15 ->}}' at ")); label2 : concat (str2, B[1]+0.2, ",", B[2], ",", B[3]); /**/ str3 : strim("\"", string("set label '{/=25 @_{/=25 c}^{/=15 ->}}' at ")); label3 : concat (str3, C[1]+0.2, ",", C[2], ",", C[3]); /**/ str4 : strim("\"", string("set label '{/=25 @_{/=25 n}^{/=15 ->}}' at ")); label4 : concat (str4, n[1], ",", n[2], ",", n[3]+0.4); /**/ str5 : strim("\"", string("set label '{/=25 L}' at ")); label5 : concat (str5, NC[1]-0.2, ",", NC[2], ",", NC[3]); /**/ draw3d ( line_width = 2, /* xrange = [-0.5, 5], yrange = [-0.5, 5], zrange = [-0.5, 5], */ points_joined = true, point_size = 1, point_type = none, transparent = false, head_length = 0.1, color = red, vector (nullp, A), color = blue, vector (nullp, B), color = green, vector (nullp, C), color = black, vector (nullp, n), points ([C, NC]), /* */ xtics = false, ytics = false, ztics = false, user_preamble = [ "set noborder", label1, label2, label3, label4, label5 ], /* view = [91, 60], */ dimensions = [1200, 1200], file_name = "vol", /* terminal = eps_color */ terminal = png );