Запилил кучку простых функций слегка расширяющих зdmath. Теперь я имею следующую проблему:
Function RollVector(angle#,x1#,y1#,z1#,x2#,y2#,z2#)
; поворачивает вектор 1 в плоскости 1 и 2 векторов.
length#=Sqr#(x1#*x1#+y1#*y1#+z1#*z1#)
If Not (angle# Mod 90)=0 Then
d#=length#*Tan#(angle#)
; normal to 1 and 2
x0#=y1#*z2#-y2#*z1#
y0#=z1#*x2#-z2#*x1#
z0#=x1#*y2#-x2#*y1#
;normal to 1 and 0
x3#=y1#*z0#-y0#*z1#
y3#=z1#*x0#-z0#*x1#
z3#=x1#*y0#-x0#*y1#
lengthof3#=Sqr#(x3#^2+y3#^2+z3#^2)
x3#=x3#/lengthof3#
y3#=y3#/lengthof3#
z3#=z3#/lengthof3#
vectorx#=(x1#+x3#*d#)/Sqr#(1+Tan#(angle#))
vectory#=(y1#+y3#*d#)/Sqr#(1+Tan#(angle#))
vectorz#=(z1#+z3#*d#)/Sqr#(1+Tan#(angle#))
Else
RuntimeError "RollVector(angle#,x1#,y1#,z1#,x2#,y2#,z2#) is too stupid for rolling vector on 90 degree, try something else."
EndIf
End Function
Дает на выход только целые числа. Но я ей не даю целых чисел. И в расчете у нее целые должны получаться редко, очень редко.
причем косяк в отбрасывании дрбной части проявляется если я пытаюсь сделать вектор длинной 1, пофиг руками или xtformnormal. Куда эту хрень нужно ударить бубном, чтобы она стала выдавать числа полностью?