Depășiți sistemul de referință

Pentru a calcula poziția dispozitivului în spațiu utilizând un sistem de referință diferit de cel standard (descris mai sus), utilizați metoda remapCoordinateSystem din obiectul SensorManager.







La începutul acestui capitol, cadrul de referință standard a fost descris în așa fel încât dispozitivul să stea plat pe suprafața plană în sus. Această abordare vă permite să modificați sistemul de coordonate pentru a calcula poziția în spațiu. Astfel, poziția la care dispozitivul este poziționat vertical poate fi desemnat ca stare de repaus.

Metoda remapCoordinateSystem are patru parametri:

• matricea de rotație originală obținută prin metoda getRotationMatrix, așa cum s-a descris anterior;

• o variabilă folosită pentru a stoca ultimul (convertit)

• axa X redefinită;







• axa Y redefinită.

Ultimii doi parametri sunt utilizați pentru a indica un nou cadru de referință. Aceste valori definesc noile axe X și Y compensate față de cele standard. clasa SensorManager oferă un set de constante care vă permit să specificați valori pentru axele: AXIS_X, AXIS_Y, AXIS_Z, AXIS_MINUS_X, AXIS_MINUS_Y și AXIS_MINUS_Z.

Listarea 14.5 arată modul în care sistemul de referință suprascrie astfel încât starea de repaus este introdus atunci când dispozitivul raspolo- Genoux vertical într-un mod portret, ecranul este pornit pentru utilizator (ris.14.3).

Depășiți sistemul de referință

SensorManager.getRotationMatrix (R, null, aValues, mValues);

float [] outR = float nou [9]; SensorManager.remapCoordinateSystem (R,

SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);

// Conversia radianelor în grade.

valori [0] = (float) Math.toDegrees (valori [0]); valori [1] = (float) Math.toDegrees (valori [1]); valori [2] = (float) Math.toDegrees (valori [2]);







Articole similare

Trimiteți-le prietenilor: