Skip to content

Commit 9a9fd55

Browse files
authored
Merge pull request #1729 from maths/LukeLongworth-patch-1
Vector Parametric Parts fix
2 parents df27a68 + fae24ee commit 9a9fd55

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

stack/maxima/contrib/vectorgeometry.mac

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,12 @@ vector_parametric_parts(vec, [exclude_params]):=block([simp:true, vars, nonlinva
115115
* @param[list] parts A list with three elements (see vector_parametric_parts) [mx1 matrix of constants, a list of mx1 matrices of constants, a list of variable names]
116116
* @return[string] TeX output of a vector parametric equation in a "standard" form.
117117
*/
118-
vector_parametric_display(parts):= block([simp:false,cons_vec,dir_vecs,vars],
118+
vector_parametric_display(parts):= block([simp:false,cons_vec,dir_vecs,vars,cons_p,dir_p],
119119
[cons_vec,dir_vecs,vars]: parts,
120-
return(sconcat(tex1(cons_vec),"+",tex1(apply("+", zip_with("*", vars, dir_vecs)))))
120+
cons_p: if ev(zeromatrixp(cons_vec),simp) then "" else tex1(cons_vec),
121+
if emptyp(dir_vecs) then dir_p: [] else dir_p: zip_with("*", vars, dir_vecs),
122+
if is(length(dir_p)=0) then dir_p: "" else if is(length(dir_p)=1) then dir_p: tex1(first(dir_p)) else dir_p: tex1(apply("+",dir_p)),
123+
return(sconcat(cons_p,if is(cons_p="") or is(dir_p="") then "" else "+",dir_p))
121124
);
122125

123126
/**

stack/maxima/contrib/vectorgeometry_test.mac

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ s_test_case(vector_parametric_parts(matrix([1],[2],[3]) + t*matrix([1],[1],[1])
5959
make_multsgn("dot");
6060
s_test_case(vector_parametric_display([matrix([1],[2],[3]),[matrix([1],[0],[1]),matrix([1],[1],[1])],[s,t]]),"\\left[\\begin{array}{c} 1 \\\\ 2 \\\\ 3 \\end{array}\\right]+s\\cdot \\left[\\begin{array}{c} 1 \\\\ 0 \\\\ 1 \\end{array}\\right]+t\\cdot \\left[\\begin{array}{c} 1 \\\\ 1 \\\\ 1 \\end{array}\\right]");
6161
s_test_case(vector_parametric_display(vector_parametric_parts(matrix([1+t+s],[2+t],[3+t+s]))),"\\left[\\begin{array}{c} 1 \\\\ 2 \\\\ 3 \\end{array}\\right]+s\\cdot \\left[\\begin{array}{c} 1 \\\\ 0 \\\\ 1 \\end{array}\\right]+t\\cdot \\left[\\begin{array}{c} 1 \\\\ 1 \\\\ 1 \\end{array}\\right]");
62+
s_test_case(vector_parametric_display(vector_parametric_parts(c(1,2,3))),"\\left[\\begin{array}{c} 1 \\\\ 2 \\\\ 3 \\end{array}\\right]");
63+
s_test_case(vector_parametric_display(vector_parametric_parts(c(1,2,3) + t*c(2,3,4))),"\\left[\\begin{array}{c} 1 \\\\ 2 \\\\ 3 \\end{array}\\right]+t\\cdot \\left[\\begin{array}{c} 2 \\\\ 3 \\\\ 4 \\end{array}\\right]");
64+
s_test_case(vector_parametric_display(vector_parametric_parts(t*c(2,3,4))),"t\\cdot \\left[\\begin{array}{c} 2 \\\\ 3 \\\\ 4 \\end{array}\\right]");
65+
s_test_case(vector_parametric_display(vector_parametric_parts(t*c(2,3,4) + s*c(3,4,5))),"s\\cdot \\left[\\begin{array}{c} 3 \\\\ 4 \\\\ 5 \\end{array}\\right]+t\\cdot \\left[\\begin{array}{c} 2 \\\\ 3 \\\\ 4 \\end{array}\\right]");
6266

6367
s_test_case(point_in_affine_spacep(matrix([1],[1]),[matrix([0],[1]),[matrix([1],[-1])]]),false);
6468
s_test_case(point_in_affine_spacep(matrix([1],[1]),[matrix([0],[1]),[matrix([1],[-1])],[t]]),false);

0 commit comments

Comments
 (0)