//██████████████████████████████████████████████████████████████████████████████████ irr::core::matrix4 volumeNormalize(irr::core::matrix4 A) { Matrix A_calc(3,3); for(int j=0;j<3;j++) { for(int i=0;i<3;i++) { A_calc.element(j,i) = A(i,j); } } double det = Determinant(A_calc); double cbrt = pow( fabs(det), 1./3 ); cbrt = ( det < 0 ) ? -cbrt : cbrt; A_calc = A_calc / cbrt; for(int j=0;j<3;j++) { for(int i=0;i<3;i++) { A(i,j) = A_calc.element(j,i); } } return A; }
//----------------------------------------------------------------------------- ISR_PWM_SET() { unsigned long A; if (speed>795) index += 16; else if (speed>595) index += 8; else if (speed>395) index += 4; else if (speed>195) index += 2; else index += 1; //------------------- if(speed>=f_Base) { PWMR_SET(pgm_read_byte(&sine[R_Index(index)])); PWMS_SET(pgm_read_byte(&sine[S_Index(index)])); PWMT_SET(pgm_read_byte(&sine[T_Index(index)])); } //----- else if (speed<=f_Boost) { PWMR_SET(A_calc(pgm_read_byte(&sine[R_Index(index)]), A_Boost)); PWMS_SET(A_calc(pgm_read_byte(&sine[S_Index(index)]), A_Boost)); PWMT_SET(A_calc(pgm_read_byte(&sine[T_Index(index)]), A_Boost)); } //----- else { A = ((N *(unsigned long)(speed -f_Boost)) /M) +A_Boost; PWMR_SET(A_calc(pgm_read_byte(&sine[R_Index(index)]), (unsigned char)A)); PWMS_SET(A_calc(pgm_read_byte(&sine[S_Index(index)]), (unsigned char)A)); PWMT_SET(A_calc(pgm_read_byte(&sine[T_Index(index)]), (unsigned char)A)); } } //ISR_PWM_SET