def test_extract_plane_and_line(): metric = '# # # 0 0,'+ \ '# # # 0 0,'+ \ '# # # 0 0,'+ \ '0 0 0 0 2,'+ \ '0 0 0 2 0' MV.setup('p1 p2 p3 n nbar', metric, debug=0) MV.set_str_format(1) ZERO_MV = MV() P1 = F(p1) P2 = F(p2) P3 = F(p3) L = P1 ^ P2 ^ n delta = (L | n) | nbar delta_test = 2 * p1 - 2 * p2 diff = delta - delta_test diff.compact() assert diff == ZERO_MV C = P1 ^ P2 ^ P3 delta = ((C ^ n) | n) | nbar delta_test = 2 * (p1 ^ p2) - 2 * (p1 ^ p3) + 2 * (p2 ^ p3) diff = delta - delta_test diff.compact() assert diff == ZERO_MV
def test_vector_extraction(): metric = ' 0 -1 #,'+ \ '-1 0 #,'+ \ ' # # #,' MV.setup('P1 P2 a', metric) ZERO_MV = MV() B = P1 ^ P2 Bsq = B * B ap = a - (a ^ B) * B Ap = ap + ap * B Am = ap - ap * B Ap_test = (-2 * P2dota) * P1 Am_test = (-2 * P1dota) * P2 Ap.compact() Am.compact() Ap_test.compact() Am_test.compact() assert Ap == Ap_test assert Am == Am_test Ap2 = Ap * Ap Am2 = Am * Am Ap2.compact() Am2.compact() assert Ap2 == ZERO_MV assert Am2 == ZERO_MV
def make_vector(a, n=3): if type(a) == types.StringType: sym_str = '' for i in range(n): sym_str += a + str(i) + ' ' sym_lst = make_symbols(sym_str) sym_lst.append(ZERO) sym_lst.append(ZERO) a = MV(sym_lst, 'vector') return (F(a))
def test_geometry(): metric = '1 0 0 0 0,'+ \ '0 1 0 0 0,'+ \ '0 0 1 0 0,'+ \ '0 0 0 0 2,'+ \ '0 0 0 2 0' MV.setup('e0 e1 e2 n nbar', metric, debug=0) e = n + nbar #conformal representation of points ZERO_MV = MV() A = make_vector(e0) # point a = (1,0,0) A = F(a) B = make_vector(e1) # point b = (0,1,0) B = F(b) C = make_vector(-1 * e0) # point c = (-1,0,0) C = F(c) D = make_vector(e2) # point d = (0,0,1) D = F(d) X = make_vector('x', 3) Circle = A ^ B ^ C ^ X Line = A ^ B ^ n ^ X Sphere = A ^ B ^ C ^ D ^ X Plane = A ^ B ^ n ^ D ^ X Circle_test = -x2 * (e0 ^ e1 ^ e2 ^ n) + x2 * ( e0 ^ e1 ^ e2 ^ nbar) + HALF * (-1 + x0**2 + x1**2 + x2**2) * (e0 ^ e1 ^ n ^ nbar) diff = Circle - Circle_test diff.compact() assert diff == ZERO_MV Line_test = -x2*(e0^e1^e2^n)+HALF*(-1+x0+x1)*(e0^e1^n^nbar)+(HALF*x2)*(e0^e2^n^nbar)+\ (-HALF*x2)*(e1^e2^n^nbar) diff = Line - Line_test diff.compact() assert diff == ZERO_MV Sphere_test = HALF * (1 - x0**2 - x1**2 - x2**2) * (e0 ^ e1 ^ e2 ^ n ^ nbar) diff = Sphere - Sphere_test diff.compact() assert diff == ZERO_MV Plane_test = HALF * (1 - x0 - x1 - x2) * (e0 ^ e1 ^ e2 ^ n ^ nbar) diff = Plane - Plane_test diff.compact() assert diff == ZERO_MV