load (draw); load (vector_rebuild); listarith : true; doallmxops : true; /* Gerade: T + r b */ T : [1,2,3]; b : [2,4,4]; A : [2,5,4]; /* r n*C / |n| */ /* r ist die Länge der Projektion von A auf g */ r : lsum(i,i,maplist("*",b,(A-T))) / |b|; /* P ist der Lotpunkt des Lotes von A auf g */ P : T + b*r/|b|; s : T + 2*(P-T); str1 : strim("\"", string("set label '{/=25 g}' at ")); label1 : concat (str1, s[1]+0.2, ",", s[2], ",", s[3]); /**/ str2 : strim("\"", string("set label '{/=25 A}' at ")); label2 : concat (str2, A[1]+0.2, ",", A[2], ",", A[3]-0.3); /**/ str3 : strim("\"", string("set label '{/=25 P}' at ")); label3 : concat (str3, P[1], ",", P[2], ",", P[3]+0.3); /**/ str4 : strim("\"", string("set label '{/=25 T}' at ")); label4 : concat (str4, T[1]-0.2, ",", T[2], ",", T[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, points ([T, s]), color = blue, vector (T, A-T), color = black, line_type = dashes, points ([A, P]), /* */ xtics = false, ytics = false, ztics = false, user_preamble = [ "set noborder", label1, label2, label3, label4 ], /* view = [91, 60], */ dimensions = [600, 600], file_name = "projektiongerade", /* terminal = eps_color */ terminal = png );