F0, G0 = vector_symbols('F0 G0')
En, Hn = vector_symbols('En Hn')
-EFl, GHl = symbols('EFl GHl')
+EFl, HGl = symbols('EFl HGl')
def vector_component(v, ix):
return v.components[N.base_vectors()[ix]]
# x array in numerical algorithm has:
# N x 3 coordinates of points 0..N-3
# 1 EFl = length parameter |EF| for point 1
-# 1 GHl = length parameter |GH| for point N-2
+# 1 HGl = length parameter |HG| for point N-2
# fixed array in numerical algorithm has:
# 4 x 3 E, En, H, Hn
global F, G
F = E + En * EFl
- G = H + Hn * GHl
+ G = H + Hn * HGl
# diff_A_i = cost_ABCD.diff(vector_component(A, 0))
# global diff_A_i
cprintraw(')')
cprintraw('#define EFl X[ NX_DIRECT + 0 ]')
- cprintraw('#define GHl X[ NX_DIRECT + 1 ]')
+ cprintraw('#define HGl X[ NX_DIRECT + 1 ]')
cprintraw('#define NX ( NX_DIRECT + 2 )')
for ai in range(0, len(abcd)):
def gen_prepare():
cprint('#define PREPARE')
cprint('memcpy(X, &INPUT[3*2], sizeof(double) * NX_DIRECT);')
- cassign_vector((F0 - E).normalize(), 'En', 'tmp_En')
- cassign_vector((G0 - H).normalize(), 'Hn', 'tmp_Hn')
+ for EH,EHs,FG0,FGs in ((E,'E', F0,'F'),
+ (H,'H', G0,'G')):
+ EFHGv = FG0 - EH
+ EFHGl = EFHGv.magnitude()
+ cassign_vector(EFHGv/EFHGl, EHs+'n', 'tmp_'+EHs)
+ cassign(EFHGl, EHs+FGs+'l', 'tmp_l'+EHs)
cprintraw('')
def gen_calculate_FG():