Mathematica won't intersect a line with a plane if any coordinate is non-numeric. So I tricked it into confessing the general case by replacing the twelve symbolic coordinates with Zeta 3, ... , Zeta 25, and then back-substituting. Safe, as long as nobody knows how to simplify the Zetaberg. A burlesque of Bell's inequality? --rwg ppPlane[InfiniteLine[{a_, b_, c_}, {d_, e_, f_}], Hyperplane[{v1_, v2_, v3_}, {p1_, p2_, p3_}]] := Point[{ (a (e v2 + f v3) + d (p1 v1 - b v2 + p2 v2 - c v3 + p3 v3))/(d v1 + e v2 + f v3), (b (d v1 + f v3) + e (-a v1 + p1 v1 + p2 v2 - c v3 + p3 v3))/(d v1 + e v2 + f v3), (c (d v1 + e v2) + f (-a v1 + p1 v1 - b v2 + p2 v2 + p3 v3))/(d v1 + e v2 + f v3)}]
# This Maple would benefit from some syntactic sugar --- #it's just P := <L F>_3 in Clifford algebra |R^{3,0,1} . WFL read(`/Users/fred/fred/euclidean/clifford.map`): # Clifford algebra GA_init([0, seq(+1, i = 1..3)]): # initialise Euclidean 3-space L := GA_build([Lu, Lv, Lw, Lz, Ly, Lx], 2); # moment & direction of line L F := GA_build([Fo, Fx, Fy, Fz], 1); # coefficients of plane F P := GA_grator(GA_prod(L, F), 3); # L,F meet at P convert(P, list); # coordinates & proj. scale factor of point P [Fo*Lz+Fx*Lv-Fy*Lu, Fo*Ly-Fx*Lw+Fz*Lu, Fo*Lx+Fy*Lw-Fz*Lv, -Fx*Lx-Fy*Ly-Fz*Lz] On 3/19/16, Bill Gosper <billgosper@gmail.com> wrote:
Mathematica won't intersect a line with a plane if any coordinate is non-numeric. So I tricked it into confessing the general case by replacing the twelve symbolic coordinates with Zeta 3, ... , Zeta 25, and then back-substituting. Safe, as long as nobody knows how to simplify the Zetaberg. A burlesque of Bell's inequality? --rwg
ppPlane[InfiniteLine[{a_, b_, c_}, {d_, e_, f_}], Hyperplane[{v1_, v2_, v3_}, {p1_, p2_, p3_}]] := Point[{ (a (e v2 + f v3) + d (p1 v1 - b v2 + p2 v2 - c v3 + p3 v3))/(d v1 + e v2 + f v3), (b (d v1 + f v3) + e (-a v1 + p1 v1 + p2 v2 - c v3 + p3 v3))/(d v1 + e v2 + f v3), (c (d v1 + e v2) + f (-a v1 + p1 v1 - b v2 + p2 v2 + p3 v3))/(d v1 + e v2 + f v3)}] _______________________________________________ math-fun mailing list math-fun@mailman.xmission.com https://mailman.xmission.com/cgi-bin/mailman/listinfo/math-fun
GACK, there are two flavors of InfiniteLine, ...[p,q] and ...[{p.q}]! The intersection (derived with the same zeta trick) based on the version defined by a pair of points is ppPlane[InfiniteLine[{{a_, b_, c_}, {d_, e_, f_}}], Hyperplane[{g_, h_, i_}, {j_, k_, l_}]] := Point[{(b d h + c d i - d (g j + h k + i l) + a (-e h - f i + g j + h k + i l))/( a g - d g + b h - e h + c i - f i), ( e (a g + c i - g j - h k - i l) + b (-d g - f i + g j + h k + i l))/( a g - d g + b h - e h + c i - f i), ( f (a g + b h - g j - h k - i l) + c (-d g - e h + g j + h k + i l))/( a g - d g + b h - e h + c i - f i)}] --rwg On Sat, Mar 19, 2016 at 3:06 AM, Bill Gosper <billgosper@gmail.com> wrote:
Mathematica won't intersect a line with a plane if any coordinate is non-numeric. So I tricked it into confessing the general case by replacing the twelve symbolic coordinates with Zeta 3, ... , Zeta 25, and then back-substituting. Safe, as long as nobody knows how to simplify the Zetaberg. A burlesque of Bell's inequality? --rwg
ppPlane[InfiniteLine[{a_, b_, c_}, {d_, e_, f_}], Hyperplane[{v1_, v2_, v3_}, {p1_, p2_, p3_}]] := Point[{ (a (e v2 + f v3) + d (p1 v1 - b v2 + p2 v2 - c v3 + p3 v3))/(d v1 + e v2 + f v3), (b (d v1 + f v3) + e (-a v1 + p1 v1 + p2 v2 - c v3 + p3 v3))/(d v1 + e v2 + f v3), (c (d v1 + e v2) + f (-a v1 + p1 v1 - b v2 + p2 v2 + p3 v3))/(d v1 + e v2 + f v3)}]
participants (2)
-
Bill Gosper -
Fred Lunnon