Drehung von Verbindungen zweier Punkte [gelöst]
Übersicht

![]() |
BlitzMoritzBetreff: Drehung von Verbindungen zweier Punkte [gelöst] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zwei beliebige Punkte im dreidimensionalen Raum (stellvertretend dargestellt durch zwei Kugeln) sollen durch einen länglichen Quader verbunden werden, d.h. zwischen den Kugeln befindet sich ähnlich wie im Gerüstbau eine Verbindungsstange.
Diese zu positionieren und zu skalieren ist kein Problem, man nehme einfach die Mitte der beiden Punkte, norme zwei Größen konstant und passe die dritte Skalierung der Entfernung an. Das Problem jedoch ist, mit welchen Werten eine solche Stange per RotateEntity gedreht werden muss. Man erhält zwar über ATan2 diverse Werte, so wie sie in 2D nützlich sind, aber in 3D habe ich noch nicht herausbekommen, ob sie etwas nützen und wie sie zu verarbeiten sind: BlitzBasic: [AUSKLAPPEN] Graphics3D 1000,700,0,2Es wäre schön, wenn mir jemand helfen könnte. |
||
- Zuletzt bearbeitet von BlitzMoritz am Fr, Sep 02, 2011 18:08, insgesamt einmal bearbeitet
![]() |
Lobby |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schon mit PointEntity![]() |
||
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
*mitFremdenFedernSchmück*
https://www.blitzforum.de/foru...457#297457 Noobody hat Folgendes geschrieben: Pitch# = ATan2( VectorY#, Sqr( VectorX#*VectorX# + VectorZ#*VectorZ# ) )
Yaw# = ATan2( -VectorZ#, -VectorX# ) - 90 Dann einfach addieren und modulo 360. ZEVS |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] AlignToVector Stange, x2# - x1#, y2# - y1#, z2# - z1#, 1 So vielleicht? Also unter der Annahme, Du Stange soll beide Kugeln verbinden. |
||
Starfare: Worklog, Website (download) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Skalierung ist nicht unwichtig, ich würde die Tiefe verlängern:
Code: [AUSKLAPPEN] ScaleEntity(Stange, 0.25, 0.25, Entfernung)
Dann lassen sich Pitch & Yaw verwenden: Code: [AUSKLAPPEN] Winkel(0) = ATan2( y2-y1, Sqr( (x2-x1)*(x2-x1)+(z2-z1)*(z2-z1) ))
Winkel(1) = ATan2( -(z2-z1), -(x2-x1) ) - 90 RotateEntity(Stange, Winkel(0), Winkel(1), 0) Die Berechnung für Yaw ist aber leider nicht perfekt, funktioniert nicht in allen fällen... Edit: Uh, funktioniert doch, EntityYaw ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
ZaPs Vorschlag ist definitiv am einfachsten. Einfach das RotateEntity durch ein AlignToVector![]() Graphics3D 1000,700,0,2 |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oohh, Danke, das klingt ja einfach ...
Aber eigentlich suche ich hier in fremden Gewässern und bin am BlitzMaxen mit minib3D. Dort wird die Zeile so nicht akzeptiert: BlitzMax: [AUSKLAPPEN] AlignToVector Stange, x2 - x1, y2 - y1, z2 - z1, 1
Leider ist minib3D-Wiki immer noch down und ich kann nicht nachschlagen. Weiß jemand, wie man in minib3D den Befehl AlignToVector verwendet? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja: gar nicht. Der Befehl ist (leider) nicht implementiert, was mich auch tierisch nervt. Über eine funktionierende Alternative bin ich allen dankbar, das würde mein eingefrorenes Projekt wieder auftauen.
Deswegen ja auch mein oberer Beitrag, das ist das einzig vernünftige, was ich zu diesem Thema finden kann. An sich funktionsfähig, aber irgendwie klappt das bei mir nicht mit der beliebigen Rückrechnung auf den Vektor... Ist aber nicht der Thread dazu. ZEVS |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN]
Hier meine Implementation für die Z-Achse (minib3d/inc/functions.bmx in Version 0.53). Du müsstest also die Stange auf der Z-Achse mit Entfernung skalieren, damit das funktioniert. Finde ich auch am meisten intuitiv. ![]() @ZEVS: Jetzt wollen wir aber auch was sehen ![]() |
||
Starfare: Worklog, Website (download) |
- Zuletzt bearbeitet von ZaP am Fr, Sep 02, 2011 16:05, insgesamt einmal bearbeitet
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
wenn man den Befehl bei Google eingibt, kommt man auf ein tolles Ergebnis im englischen BlitzBasic Forum. KLICK Danach kann man sich die Funktion klauen (sollte eigentlich fast 1:1 gehen), und dann frisch fröhlich AlignToVector ![]() MfG, Darth |
||
Diese Signatur ist leer. |
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Problem gelöst ![]() BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group