A
Atom
Я написал код (не спрашивайте, что за язык) но почему-то работает он некорректно, помогите найти ошибку:
Procedure pRollPoint3d(cx.f, cy.f, cz.f, rx.f, ry.f, rz.f)
lcx = cx
lcy = cy
lcz = cz
r.f = pGetRadiusVector3d(lcx, lcy, lcz)
lcx = lcx/r
lcy = lcy/r
lcz = lcz/r
a.f = 0.0
If r > 0.0
If rx > 0.0
a = pGetAngle(lcy, lcz) ;Функция pGetAngle возвращает угол, если известен синус и косинус
lcy = pGetCos(pFormatAngle(rx+a)) ;Функция pFormatAngle возвращает угол сокращая число витков до нуля.
lcz = pGetSin(pFormatAngle(rx+a))
EndIf
If ry > 0.0
a = pGetAngle(lcz, lcx)
lcz = pGetCos(pFormatAngle(ry+a))
lcx = pGetSin(pFormatAngle(ry+a))
EndIf
If rz > 0.0
a = pGetAngle(lcx, lcy)
lcx = pGetCos(pFormatAngle(rz+a))
lcy = pGetSin(pFormatAngle(rz+a))
EndIf
EndIf
lcx = lcx*r
lcy = lcy*r
lcz = lcz*r
EndProcedure
Procedure pRollPoint3d(cx.f, cy.f, cz.f, rx.f, ry.f, rz.f)
lcx = cx
lcy = cy
lcz = cz
r.f = pGetRadiusVector3d(lcx, lcy, lcz)
lcx = lcx/r
lcy = lcy/r
lcz = lcz/r
a.f = 0.0
If r > 0.0
If rx > 0.0
a = pGetAngle(lcy, lcz) ;Функция pGetAngle возвращает угол, если известен синус и косинус
lcy = pGetCos(pFormatAngle(rx+a)) ;Функция pFormatAngle возвращает угол сокращая число витков до нуля.
lcz = pGetSin(pFormatAngle(rx+a))
EndIf
If ry > 0.0
a = pGetAngle(lcz, lcx)
lcz = pGetCos(pFormatAngle(ry+a))
lcx = pGetSin(pFormatAngle(ry+a))
EndIf
If rz > 0.0
a = pGetAngle(lcx, lcy)
lcx = pGetCos(pFormatAngle(rz+a))
lcy = pGetSin(pFormatAngle(rz+a))
EndIf
EndIf
lcx = lcx*r
lcy = lcy*r
lcz = lcz*r
EndProcedure