w GLScene mamy trzy parametry (RollAngle, PitchAngle i TurnAngle) dla obrotu wokół orientacji lokalnej. na obrazku poniżej, w jaki sposób mogę obrócić sześcian wokół orientacji globalnej (oś pomarańczowa)?Global Rotation
Odpowiedz
Może mógłbyś użyć obiektu "DummyCube" jako obiektu nadrzędnego. Następnie możesz obrócić najpierw kostkę wewnątrz kostki manekina, a następnie DummyCube.
Dzięki za Advanced. Tak, masz całkowitą rację. – Ata
Trzeba by przekształcić Kąt obrotu osi do kątów Eulera. Oto link wyjaśnienia tego procesu w niektórych szczegółach z kodem:
http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToEuler/index.htm
Z artykułu:
yaw = atan2(y * sin(angle)- x * z * (1 - cos(angle))
, 1 - (y2 + z2) * (1 - cos(angle)))
pitch = asin(x * y * (1 - cos(angle)) + z * sin(angle))
roll = atan2(x * sin(angle)-y * z * (1 - cos(angle))
, 1 - (x2 + z2) * (1 - cos(angle)))
EDIT: przemianowany na zmienne być zgodne z konwencją pitch, yaw, rolka nazewnictwa.
@ Mikola, sprawdziłem twoją sugerowaną stronę. Myślę, że poniższy kod to: 'heading = atan2 (y * sin (kąt) - x * z * (1 - cos (kąt)), 1 - (y2 + z2) * (1 - cos (kąt))) '--- ' attitude = asin (x * y * (1 - cos (kąt)) + z * sin (kąt)) '--- ' bank = atan2 (x * sin (kąt) -y * z * (1 - cos (kąt)), 1 - (x2 + z2) * (1 - cos (kąt))) " – Ata
Czy możesz wyjaśnić ten kod? – Ata
Witamy w 3d geometrii. –
To jest brudny cheat, ale jeśli obiekt jest na początku (0,0,0) i jest tylko jeden obiekt w scenie, można obrócić kamerę (i źródło światła) wokół obiektu, zamiast obracanie obiektu.
O ile mi wiadomo, powinniśmy użyć konwersji między orientacją lokalną a orientacją globalną. Tak masz rację. ale chcę wiedzieć, w jaki sposób mogę użyć algorytmu matematycznego, aby obrócić obiekt wokół orientacji globalnej. Myślę, że powinienem użyć kątów Eulera. ale jak ... – Ata
- 1. CGContext rotation
- 2. Global NSString
- 3. Kakao NSStatusBar Global HotKey
- 4. Namespace PHP Global
- 5. Co to jest global ::?
- 6. Problem Global Hook Keylogger
- 7. Golang Global Variable access
- 8. "global main" w Zgromadzeniu
- 9. Git global hook customization
- 10. C# Project Global AssemblyInfo
- 11. VB.NET 2005 - "Global" Event Handler?
- 12. Node.js Global eval, rzucając ReferenceError
- 13. Global Exception Handling in Jersey
- 14. "UnauthorizedAccessException" - "Global \ .net clr networking"
- 15. SASS Global Variables + Rails 3.1
- 16. Global Variable mason2 in POET
- 17. Etapy Global [BeforeScenario], [AfterScenario] w SpecFlow
- 18. -Confirm: $ false set as global setting
- 19. Microsoft.SqlServer.Types.dll w pamięci podręcznej Global Assembly Cache?
- 20. narzędzie Viewer for Global Assembly Cache (Viewer)
- 21. C# Hook Global Keyboard Events - .net 4.0
- 22. C# WCF Global Namespaces - Royal Mail
- 23. Erlang - Global Variables .. tak wiem, wiem
- 24. Global Variable - połączenie z bazą danych?
- 25. Skrypt zabezpieczający oparty na Global Group?
- 26. Metoda Call.prototype obiektu na Global Scope
- 27. Wiele MODAL VIEW kontrolek zmienia bazową modalną na FULL SCREEN po ROTATION
- 28. Android i OOP - Global Variables vs Inherited Getters w Fragmentach
- 29. Global onStart na Play Framework 2.3.7 nie działa?
- 30. Czy dostępna jest zmienna Global Request w języku Python/Django?
Z tym zrzutem ekranu nie pozostawia mi innego wyboru, jak tylko odpowiedzieć na pytanie :) –
'@Wouter van Nifterick' przepraszam, nie rozumiem cię, co masz na myśli? – Ata
Co to jest GLScene? Normalnie powiedziałbym po prostu glRotatef (angle, rot_axis.x, rot_axis.y, rot_axis.z), lub jakąś równoważną transformację. – datenwolf