Cylinder von PunktA nach PunktB "ziehen"

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

MCWulf

Betreff: Cylinder von PunktA nach PunktB "ziehen"

BeitragDo, Apr 07, 2005 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Also ich habe in meinem 3d-Raum 2 Punkte.

Nun möchte ich sie mit einem Cylinder verbinden.

Das Scaling und das Positioniering (lol) schaffe ich auch noch, blos hört es dann bei der Rotation auf.

Könnt ihr mir vielleicht mit nem Code sagen/zeigen, wie ich nun den Cylinder so drehen kann, dass sein Anfang und sein Ende bei beiden Punkte sind?

Vielen Dank!!!

Mr.Keks

BeitragDo, Apr 07, 2005 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
zu erst mal mit positionmesh dafür sorgen, dass der handlepunkt an einem der "pole" (nicht ganz das richtige wort ^^) des zylinders ist. am ersten punkt positionieren. dann mit aligntovector und den differenzen zum zielpunkt den zylinder ausrichten und um die entitydistance skalieren.

wenn du es mathematischer machen willst, darfst du natürlich auch mit atan2 und pythargoras arbeiten Wink.
MrKeks.net

MCWulf

BeitragDo, Apr 07, 2005 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie benutzt man AlignToVector? Muss man da die Funktion 3 mal für alle 3 achsen aufrufen? oder wie? :-/

Mr.Keks

BeitragDo, Apr 07, 2005 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, mit dem achsenparameter gibst du an, welche achse auf den vektor ausgerichtet werden soll. in deinem fall also die y-achse.
MrKeks.net

MCWulf

BeitragDo, Apr 07, 2005 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, irgendwie bin ich zu dumm dazu :-/ kannst du mir vielleicht nen code geben? Sagen wir als Variablen X1,X2,Y1,Y2,Z1,Z2...

Wäre wirklich toll!!!! Thx!!

MCWulf

BeitragFr, Apr 08, 2005 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab jetzt folgenden Code:
BlitzBasic: [AUSKLAPPEN]

If X1 > X2 Then
LaserLeX=X1-X2
PosLaserX=X1-X2
Else
LaserLeX=X2-X1
PosLaserX=X2-X1
EndIf

If Y1 > Y2 Then
LaserLeY=Y1-Y2
PosLaserY=Y1-Y2
Else
LaserLeY=Y2-Y1
PosLaserY=Y2-Y1
EndIf

If Z1 > Z2 Then
LaserLeZ=Z1-Z2
PosLaserZ=Z1-Z2
Else
LaserLeZ=Z2-Z1
PosLaserZ=Z2-Z1
EndIf
LaserLeDig =Sqr(LaserLeX^2+LaserLeZ^2)
LaserLenght=Sqr(LaserLeDig^2+LaserLeY^2)
LaserRoY =ATan2(Z1-Z2,X1-X2)
LaserRoZ =ATan2(Y1-Y2,X1-X2)
LaserRoX =ATan2(Y1-Y2,Z1-Z2)
PositionEntity Turm\EntLaser,PosLaserX,PosLaserY,PosLaserZ
ScaleEntity Turm\EntLaser, 0.25,LaserLenght,0.25
RotateEntity Turm\EntLaser, LaserRoX ,LaserRoY,LaserRoZ

Und was ist hier jetzt dran falsch? Confused

Vielen Dank für die Hilfe! Neutral
 

TOONY

BeitragSo, Apr 10, 2005 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf BlitzBasic.com hat ein gewisser "Toony" eine Funktion dafür veröffentlicht!!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group