--coneHeightCalc 1.1 by zhangy

clearListener()
--function 
fn ConeHeight edge_ab edge_ac edge_bc edge_ad edge_bd edge_cd=
(
angle_bad=(edge_ad*edge_ad+edge_ab*edge_ab-edge_bd*edge_bd)/(2*edge_ad*edge_ab)
angle_cbd=(edge_bd*edge_bd+edge_bc*edge_bc-edge_cd*edge_cd)/(2*edge_bd*edge_bc)
angle_abc=(edge_ab*edge_ab+edge_bc*edge_bc-edge_ac*edge_ac)/(2*edge_ab*edge_bc)

edge_gd=edge_bd*sqrt(1-angle_cbd*angle_cbd)
edge_gb=edge_bd*angle_cbd
edge_hb=edge_gb/angle_abc
edge_gh=edge_hb*sqrt(1-angle_abc*angle_abc)
edge_ha=edge_ab-edge_hb
edge_dh=sqrt(edge_ha*edge_ha+edge_ad*edge_ad-2*edge_ha*edge_ad*angle_bad)

angle_dhg=(edge_dh*edge_dh+edge_gh*edge_gh-edge_gd*edge_gd)/(2*edge_dh*edge_gh)
edge_dh*sqrt(1-angle_dhg*angle_dhg)
)

--init edges
ed_po=distance (getvert $box01 3) $point01.pos
ed_py=distance (getvert $box01 4) $point01.pos
ed_pz=distance (getvert $box01 6) $point01.pos
ed_px=distance (getvert $box01 1) $point01.pos

ed_oz=distance (getvert $box01 3) (getvert $box01 6)
ed_ox=distance (getvert $box01 3) (getvert $box01 1)
ed_oy=distance (getvert $box01 3) (getvert $box01 4)

ed_zy=distance (getvert $box01 6) (getvert $box01 4)
ed_zx=distance (getvert $box01 6) (getvert $box01 1)
ed_xy=distance (getvert $box01 1) (getvert $box01 4)
print "x"
ConeHeight ed_oy ed_oz ed_zy ed_po ed_py ed_pz
print "y"
ConeHeight ed_ox ed_oz ed_zx ed_po ed_px ed_pz
print "z"
ConeHeight ed_ox ed_oy ed_xy ed_po ed_px ed_py