Punktermittlung in 3d

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Steve0

Betreff: Punktermittlung in 3d

BeitragMi, Okt 27, 2004 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mein Problem is ich bin erst in der 9. Klasse und für 3d brauch bestimmte Kenntnisse die ich noch nicht hab.
Ich hab einen Punkt (beispelsweise A) der sich in einem bestimmten Abstand um einen zweiten Punkt M drehen sollUnd zwar 3D.
Im Grund ist das das "gleiche" wie in 2d eine Berechnung mit Sin u. Cos(=Kreis).
Code: [AUSKLAPPEN]
For winkel=0 To 359
 x=Mittelpunkts_x_Koordinate-Cos(winkel)*abstand
 y=Mittelpunkts_y_Koordinate-Sin(winkel)*abstand
 Plot x,y
next

bloß in 3D auf 3-Achsen (=Kugel).

Ich hoffe ihr könnt mir helfen schon mal Danke im Voraus.
Falls ich was unzureichend erklärt habe (ich bin auch nur ein Programmierer) bitte noch mal nachfragen.
Falls ich was falsch im Code hab bitte verbessern.
Danke.

Wild-Storm

BeitragMi, Okt 27, 2004 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
mach das so:

Code: [AUSKLAPPEN]

piv = createpivot()
a = createsphere(piv)
mobveentity a,0,0,1

repeat

 turnentity piv,1,0,0

;updates etc.
until keydown(1)


also, du erstellst ein pivot, machst die sphere abhängig zum pivot, bewegst die kugel ein wenig weg und drehst dann das pivot, probiers mal aus
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875
 

Steve0

BeitragMi, Okt 27, 2004 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Neee.
Tschuldigung ich hab das ganz anders gemeint. (Sonst wär das ja viel zu einfach) Very Happy
Ich will die Koordinaten von einem Punkt auf der gedachten Kugel um den Mittlepunkt (z.b. ein Cube)
Um das zu errechnen hab ich:
-den Abstand von dem Mittelpunkt zum Punkt auf der Kugel (der Abstand is konstant)
-die Koordinaten des Mittlepunktes
-(einen oder mehrere Winkel falls das damit geht)

Falls noch was unklar bitte schreiben.

Wild-Storm

BeitragMi, Okt 27, 2004 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:

Ich will die Koordinaten von einem Punkt auf der gedachten Kugel um den Mittlepunkt (z.b. ein Cube)

versteh ich nich so ganz. vllt machst du ne zeichnung=)
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875
 

Steve0

BeitragMi, Okt 27, 2004 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeichnung is net schwer aber wie mach ich die ins Internet?

Also nochmal ganz langsam.
2D:
-Ich kann die Koordianten eines Punktes mithilfe eines Winkels, dem
Abstand (=Radius) und dem Mittelpunkt berechnen (wie oben im code).
(Im Code oben entsteht ein Kreis.=Deswegen Kugel)

Ich wills aber 3D auf allen 3-Achsen.

Wild-Storm

BeitragMi, Okt 27, 2004 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
axo.
wieso denn dann nicht einfach entityx() entityy() entityz()? =)
oder hab ich wieder was falsch verstanden
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875
 

Dreamora

BeitragMi, Okt 27, 2004 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
in 3D brauchst du 2 winkel. Es müsste hier noch ein Thread diesbezüglich sein von ShadowTurtle wo du die Formeln findest.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Steve0

BeitragMi, Okt 27, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wahrscheinlich hab ich keine so guten Erklärungskünste Very Happy also mach ich ein Bild aber wie krieg ich das ins Forum. Eine Internetseite hab ich nicht. Sad
Was nu?

Wild-Storm

BeitragMi, Okt 27, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
www.blitzpasting.de.vu
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875
 

Steve0

BeitragMi, Okt 27, 2004 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Tschuldigung hab den Thread von Dreamora nicht gesehen.
Ähm habs schon mal ausprobiert aber da kann ich bloss in 2 Ebenen mein
(z.b. Mesh) um den Mittelpunkt drehen. Das heißt 1. x-y 2. x-z.
Trotzdem danke ich werd mal nach dem Thread von ShadowTurtle suchen.

zu Wild-storm: Danke mal schaun ob ichs schaff. Kann weng dauern.
 

Darren

BeitragMi, Okt 27, 2004 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
willkommen im club ich bin auch erst in der 9.klasse......
die andren typen kann unsre probs garnet he die ham den ganzen mathescheiß ja shcon in der schule gehabt die könn des garnet beurteilen... hey und du wphnst ja auch gleich bie mir um die ecke ich wohn in coburch*g* naja egal hast du ICQ ich würde dich gerne mal was fragen......

by Darren
 

Steve0

BeitragMi, Okt 27, 2004 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
also habs ma versucht.

http://www.blitz-pasting.de.vu...chnung.jpg

Falls link net geht geht ihr bitte auf uploads und dann auf punktberechnung.jpg
 

Steve0

BeitragMi, Okt 27, 2004 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu DarrenSharm: Leider hab ich kein ICQ muss mich ma anmelden. Ich bin in der Realschule. Zurzeit machen wir Flächenberechnungen von Dreiecken mit hilfe von Vektoren is ziemlich einfach. Übermorgen schreiben wir Schulaufgabe. Zitter Zitter. In ner Stegreifarbeit hab ich aber scho ne 2 Very Happy . Mathe macht bei unserm Lehrer ziemlich viel Spass.
 

Darren

BeitragMi, Okt 27, 2004 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
naja unser mathelehrer is so ziehmlich des beschissenste was es so auf der welt gibt abba ich bin auch ned schlechd in mathe immer so 1-2 ja okay lad dir mal icq!!! kann ich vlt mal dein mail adresse haben???? achja und zu deim prob.....
naja du musst das gleiche wie in 3d machn nur mit einer achse mehr is doch ganz easy ich habs zwar nicht getestet aber ich denke das müsste gehen(hab mich noch fast nicht mit sinusfunktionen auseinandergesetzt) Crying or Very sad Crying or Very sad Crying or Very sad naja versuchs doch einfach mal....
by Darren[/url]

Thoem

BeitragMi, Okt 27, 2004 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst Du etwas in der Art:

Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()
Dim px#(10),py#(10),pz#(10)

; punkte erzeugen
px(0)=-10 : py(0)=-10 : pz(0)=0
px(1)=-10 : py(1)= 10 : pz(1)=0
px(2)= 10 : py(2)= 10 : pz(2)=0
px(3)= 10 : py(3)=-10 : pz(3)=0

gh=GraphicsHeight()/2 ; für Projektion
gw=GraphicsWidth()/2
v#=1 ; drehschritte
Repeat
   Cls
   For i=0 To 3
      ; drehung x-achse
      x#=px(i)
      y#=(py(i)*Cos(v))-(pz(i)*Sin(v))
      z#=(py(i)*Sin(v))+(pz(i)*Cos(v))
      px(i)=x
      py(i)=y
      pz(i)=z
      ; drehung y-achse
      x#=(px(i)*Cos(v))+(pz(i)*Sin(v))
      y#=py(i)
      z#=(-px(i)*Sin(v))+(pz(i)*Cos(v))
      px(i)=x
      py(i)=y
      pz(i)=z
      ; drehung z-achse
      x#=(px(i)*Cos(v))-(py(i)*Sin(v))
      y#=(px(i)*Sin(v))+(py(i)*Cos(v))
      z#=pz(i)
      px(i)=x
      py(i)=y
      pz(i)=z
   Next
   For i=0 To 3
      Color 255,255,0
      Plot gw+(px(i)*10),gh+(py(i)*10) ; projektion
   Next
   Flip()
Until KeyHit(1)
End


Jaja, der Code ist vielleicht nicht ganz optimal. Er verwendet aber anschaulich die Drehung eines Punktes im 3D-Raum unter zuhilfenahme von Rotationsmatritzen.
Wobei es aber wesentlich einfacher ist, einen Pivot um einen Pivot zu rotieren, und mit EntityX(),EntityY(), EntityZ() seine Koordinaten nach der Drehung zu erfragen...
Thoem...
  • Zuletzt bearbeitet von Thoem am Mi, Okt 27, 2004 19:47, insgesamt einmal bearbeitet
 

Darren

BeitragMi, Okt 27, 2004 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
kann schon sein
 

Dreamora

BeitragMi, Okt 27, 2004 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
alpha = Rotationswinkel um Y-Achse also Rotation in der Grundebene
beta = Rotationswinkel bezüglich der Grundebene also XZ-Ebene

X = OrigX + Radius * cos( alpha ) * cos( beta )
Y = OrigY + Radius * sin( beta )
Z = OrigZ + Radius * sin( alpha ) * cos( beta )

dabei ist X aus blickrichtung nach rechts, Z in die tiefe und Y nach oben
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Mi, Okt 27, 2004 20:08, insgesamt einmal bearbeitet
 

Steve0

BeitragMi, Okt 27, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu Thoem: Ich wollte das ganze so wie du´s hast aber in 3D. Ich hab beim überfliegen deines Codes gesehen, anhand der gelben Textstücke, das du die Achsen drehst. Also falls jemand auf die Idee kommt das ganze genau so in 3D zu machen (mit Achsen drehen) dann sehe ich das nicht als Lösung meines Problems an, weil ich ja sonst (denke ich jedenfalls) die ganze Szenerie mitdrehen muss.

Zu DarrenSharm: Ich habs schon mal ausprobiert (ihr dürft nicht denken das ich wie die meisten anderen bin, ich probier schon vorher aus was ich kann) aber da kann ich glaub ich entweder die eine ebene (X-Y) berechnen oder die andere (X-Z). Hoffentlich war mein Bild stark aussagekräftig. Wenn nicht besser kann ichs nun mal nicht.
 

Steve0

BeitragMi, Okt 27, 2004 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry hab den Thread von Dreamora net gesehen.
Das ändert natürlich alles.

Hier mein Code:
Code: [AUSKLAPPEN]
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
cube1=CreateCube()
cube2=CreateCube()
cam=CreateCamera()
MoveEntity cam,0,50,0
MoveEntity cube2,-20,0,0
WireFrame 1
CameraClsColor cam,255,255,255
EntityColor cube1,0,0,0
EntityColor cube2,0,0,0
Repeat
If KeyDown(59) Then winkel=winkel+1
If KeyDown(60) Then winkel=winkel-1
If KeyDown(61) Then winkel2=winkel2+1
If KeyDown(62) Then winkel2=winkel2-1
X# = 20 * Cos( winkel ) * Cos( winkel2 )
Y# = 20 * Sin( winkel2 )
Z #= 20 * Sin( winkel ) * Cos( winkel2 )
PositionEntity cube2,x,y,z
PointEntity cam,cube1
RenderWorld
UpdateWorld
Color 0,0,0
Text 0,0,"X: "+X+" Y: "+Y+" Z: "+Z
Text 0,15,"Tris: "+TrisRendered()
Text 0,30,"F1 um alpha zu vergrößern"
Text 0,45,"F2 um alpha zu verringern"
Text 0,60,"F3 um beta zu vergrößern"
Text 0,75,"F4 um beta zu verkleinern"
Flip
Until KeyDown(1)


Sicher kann man noch was verbessern. Aber genauso wollte ich´s
Danke Very Happy
 

Dreamora

BeitragMi, Okt 27, 2004 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habs noch editiert, um eine gewünschte "Grundposition" zu ermöglichen ( also den Startpunkt / Originalpunkt, von welchem alles ausgeht )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group