- Vectorrechnen , Kreis um Richtungs Vector quasi ein Zyl
Übersicht

![]() |
Markus2Betreff: - Vectorrechnen , Kreis um Richtungs Vector quasi ein Zyl |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
also ich habe einen Richtungs Vector und am Ende muß ich einen Kreis machen in 10 Grad Schritten was dann so aussieht wie ein Zylinder aus Punkten oder Kugeln . Also Formeln für Dot und Scalarprodukt habe ich , aber weiß jetzt nicht wie ich die anwenden muß ![]() z.B. dx=0 dy=-0.5 dz=0.5 laenge=100.0 nach oben und hinten mit entfernung 100 um den Punkt dx*l,dy*l,dz*l soll nun ein Kreis hin . PS:Der Richtungs Vector kann x belibig sein . |
||
- Zuletzt bearbeitet von Markus2 am Di, Apr 06, 2004 12:32, insgesamt einmal bearbeitet
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmmm was ist eigentlich der 2. Vektor? | ||
vertex.dreamfall.at | GitHub |
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hööö??
Du willst um einen Richtungsvektor einen Kries machen? 1.: Richtungsvektoren sind wie der Name sagt für Richtungen und nicht für Positionsangaben, dafür sind die Positionsvektoren da. 2.: Einen Kreis kannst du doch ganz leicht mit den Sinus und Kosinus Funktionen erstellen und wenn genau in 10 Grad Schritten is es ja irgendwie noch leichter... Hier der Code in 2D, kleiner und Verständlicher: Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Const mx = 400 Const my = 300 Const radius = 100 Repeat Cls For i=0 To 359 Step 10 Plot mx+Cos(i)*radius, my+Sin(i)*radius Next Flip Until KeyDown(1) End Und hier in 3D annäherungsweise wie du es willst? Ich hab keine Steuerung eingebaut und die Ansicht is doof, dürfte aber ungefähr so sein, so wie ich dein Prob. verstanden hab. Code: [AUSKLAPPEN] Type vector
Field dx#, dy#, dz# Field length# End Type Graphics3D 800,600,16,2 SetBuffer BackBuffer() Const radius = 2 Dim punkte(35) For i=0 To 35 punkte(i) = CreateSphere(16) Next Local cam = CreateCamera() Local v.vector = New vector v\dx# = 10 v\dy# = 20 v\dz# = 5 NormalizeVector(Handle(v)) v\length# = 5 For i=0 To 35 PositionEntity punkte(i), v\dx#*v\length#+Cos(i*10)*radius, v\dy#*v\length#+Sin(i*10)*radius, v\dz#*v\length# ScaleEntity punkte(i), 0.1, 0.1, 0.1 Next PointEntity cam, punkte(0) Repeat RenderWorld Text 0, 0, v\dx#+", "+v\dy#+", "+v\dz# Flip Until KeyDown(1) End Function NormalizeVector(vhandle) v.vector = Object.vector(vhandle) v\length# = Sqr#(v\dx#*v\dx# + v\dy#*v\dy# + v\dz#*v\dz#) v\dx# = v\dx# / v\length# v\dy# = v\dy# / v\length# v\dz# = v\dz# / v\length# End Function Mfg Xenon |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Vertex der erste Vector ist 0,0,0 der zweite dx*l,dy*l,dz*l
@Xenon Naja fast , wie ich nen Kreis in 2D mache weiß ich . Deine darstelung in 3D ist aber falsch , mach mal nen Vector nach oben und guck was passiert , genau das Problem habe ich ![]() Ich glaube es sind zwei Dinge die getan werden müssen , erst den Endpositions Vector transformieren das der senkrecht steht dann die Punkte drum machen und wieder zurück transformieren oder so ... ??? Aus dem Richtungsvector mit der länge habe ich den Positionsvector darum soll der Kreis mit nem Radius von z.B. 10 Die Spheres könnte man auch on the fly erstellen nach einem errechneten Pos. Vetor , die Kugel sind nur zum sichtbar machen , eigentlich reicht es wenn ich die Pos. aller Kugel im Kreis bekomme . |
||
![]() |
Xenon |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gut, versteh ich das dann Richtig, das das so Aussehen sollte nur mit Vektoren??
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() Const mx = 400 Const my = 300 Const radius = 20 Dim punkte(35) cube = CreateCube() For i=0 To 35 punkte(i) = CreateSphere(16, cube) Next For i=0 To 35 PositionEntity punkte(i), Cos(i*10)*radius, 1, Sin(i*10)*radius ScaleEntity punkte(i), 1, 0.01, 1 Next Local cam = CreateCamera() PositionEntity cam, 0, 0, -50 ScaleEntity cube, 0.1, 10, 0.1 Local xrot = 1 Local yrot = 1 Local zrot = 1 Local time = MilliSecs() Repeat TurnEntity cube, xrot, yrot, zrot If MilliSecs()-time > 3000 Then xrot = Rand(-3,3) yrot = Rand(-3,3) zrot = Rand(-3,3) time = MilliSecs() End If RenderWorld Flip Until KeyDown(1) End |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau so , ohne Parent Entitys , also rein Mathematisch .
Zum sichtbar machen der Vectoren kann man aber Entitys benutzen oder einfach nur Pixel würden mir reichen . Irgendwie muß man das mit einer Matrix lösen können ??? Aber wie ??? Also das Ende von dieser Linie die frei im Raum steht ist oben . Wenn man das jetzt umrechnen könnte das diese Linie nach oben steht was man eigentlich nicht bräuchte kann man da den 2D Kreis dran hängen und wieder zurück rechnen . Oder wenn ich wüste wie man Funk. AlignToVector nachbilden kann wäre mir auch geholfen . |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group