2011-11-19 8 views
53

The documentation jest dość niejasne, co się dzieje, kiedy te metody są używane. Czy ktoś może wyjaśnić, w jaki sposób Matrix wpływa na mapę bitową, w której jest ustawiony? Używają tam terminu concatenate, ale nie jestem pewien, w jaki sposób termin ten odnosi się do danych współrzędnych (wcześniej używał go tylko w odniesieniu do manipulacji ciągami).Poszukuję objaśnienia post/pre/set Translate (w obiekcie Matrix) i jak z nich korzystać

Odpowiedz

124

Zestaw metod zastąpi bieżącą Matrix nowymi wartościami, bez względu na to, co Matryca zawierała wcześniej. Metoda przed i po zastosuje nową transformację przed lub po tym, co zawiera obecna Matryca.

W tym przykładzie, obrót zostanie zignorowany, ponieważ używamy metody określonej i m będzie zawierać tylko tłumaczenie:

Macierz M = new Matrix();

m.setRotate (90);

m.setTranslate (100, 100);

W tym przykładzie, końcowa matryca będzie tłumaczenie następuje przez obrót:

macierzy M = nowa macierz();

m.setTranslate (100, 100);

m.postRotacja (90);

W ostatnim przykładzie, końcowa matryca będzie obrót następuje tłumaczenia:

macierzy M = nowa macierz();

m.setTranslate (100, 100);

m.preRotate (90);

Jest trochę więcej informacji w tym (dość długie) postu:

http://www.satyakomatineni.com/akc/display?url=displaynoteimpurl&ownerUserId=satya&reportId=2898

Nadzieję, że to pomaga.

+1

Niektóre komentarze na temat współrzędnych, których używa, również byłyby super w tej odpowiedzi. np. "rotacja, po której następuje tłumaczenie" jest dość oczywiste: ale w jaki sposób osiąga się to w odniesieniu do osi X i Y? Jak obrócić coś o jego centralnym punkcie, a nie współrzędnym głównym. – RichieHH

+1

Pytanie dotyczyło różnicy między metodami pre/post/set. Dokumenty api są dość jasne o różnych wariantach każdej transformacji. Oczywiście, jeśli zastosujesz transformacje w różnych zamówieniach, będzie to miało pewien wpływ na wartości parametrów, ale jest to nieco nietypowy temat. – Albin

+0

To bardzo pomaga, myślę, że zespół programistów Androida powinien uwzględnić to w swoich dokumentach. – tim687

Powiązane problemy