Exemplo n.º 1
0
//██████████████████████████████████████████████████████████████████████████████████
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;
}
Exemplo n.º 2
0
//-----------------------------------------------------------------------------
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