Autor Wątek: Ułożenie równoległe do innego (3D)  (Przeczytany 697 razy)

Offline lukasyno

  • Użytkownik

# Grudzień 01, 2010, 19:52:07
Cześć.

Mam obiekt plane, mieści się na nim 100 boxów o wielkości 80x80x80 (z jednej strony), teraz układam pierwszego boxa na rogu plane'a, z tym ze planea obracam katami Eulera wokół osi X i Y, i teraz pytanie jak na podstawie wartości obrotów ustawić boxa równolegle do głównego planea ?
Mam jeden pomysł żeby stworzyć kopie takiego planea w nim umieścić 100 boxów a następnie odczytywać ich układy współrzędnych względem świata.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Grudzień 02, 2010, 10:28:11
Nie podałeś o jakie "środowisko" chodzi, w czym to piszesz (a może modelujesz w 3ds Max?). Zakładam, że po prostu pytasz o transformacje matematyczne z użyciem macierzy itp. Zakładam też, że pod pojęciem "plane" kryje się tutaj zorientowany jakoś w przestrzeni 3D prostokąt (tak określają go programy do 3D), a nie rozciągająca się w nieskończoność, prawdziwa płaszczyzna.

Proponuję wyjść od tego, że w pewnym "lokalnym" ("oryginalnym") układzie współrzędnych plane należy do płaszczyzny XZ (czy dowolnej innej) i jego róg leży w punkcie (0,0,0). Wtedy boksy możesz na nim układać tak, że po prostu lewy-dolny-bliski róg pierwszego leży w punkcie (0,0,0), następnego w prawo w punkcie (80,0,0), następnego (160,0,0) itd., po prostu przesuwając je w osi X i Z.

Teraz znając kąty Eulera, wg których chcesz obracać plane razem z tymi boksami, możesz ułożyć macierz transformacji z tego "oryginalnego" układu (który był po to, żeby uprościć rozmieszczanie boksów) do docelowego. Ta transformacja może się składać w razie potrzeby z translacji no i z tej rotacji. Potem tą macierz zaplikuj zarówno do plane, jak i do wszystkich boksów, a one pozostaną rozłożone na tej obróconej już płaszczyźnie.

Offline lukasyno

  • Użytkownik

# Grudzień 02, 2010, 11:05:24
generalnie sprawa wygląda tak


i teraz żeby tego zielonego boxa ustawić dokładnie w miejscu (z tylu, prawy narożnik) musiał bym znać
-pozycje na osi x i y (zakladajac ze os z jest do góry a y w głąb), z tym będzie problem bo przecież te pozycje zależy od obrotu głównego planea (czym bardziej obrócony tym mniejsze)
-obroty dla poszczególnych boxow bo przecież środkowy byłby bardziej lub mniej(zależy która strona) obrócony niż ten na krańcu ?
- też muszę znać jego pozycje na osi z (ta pionowa) i tutaj tez to zależy od kąta obrotu..

mój pomysł żeby zrobić klona tego planea co klatkę przypisywać mu translacje, obroty itd z głównego planea a w nim umieścić "dzieci"(wielkości poszczególnych boxow) a potem odczytywać pozycje tych dzieci wglądem świata, to chyba najłatwiejsze:)