abstand zwischen zwei objekten messen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

mas93

Betreff: abstand zwischen zwei objekten messen

BeitragDo, Nov 02, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,Ich progge zurzeit mit nem Freund nen kleinen ego-shooter und es geht gut vorran, und solangsam kommen wir zu den Gegnern(dem ,denk ich ,schwierigstren teil).

So, Ich will den abstand zwischen 2 objekten messen z.b Mesh->Mesh.

Habt ihr ne idee wie ich das am besten mache???

Wäre nett wenn ihr ne idee hättet

mfg marius

DerHase

BeitragDo, Nov 02, 2006 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Der geile Pythagoras könnte Dir eventuell weiter helfen.
Play Satyr!

mas93

BeitragDo, Nov 02, 2006 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool,danke.Dann schau Ich mir das mal an!

Ich hoffe das ich da nich geil auf den geilen werde^^

FreetimeCoder

BeitragDo, Nov 02, 2006 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Entitydistance
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA
 

Dreamora

BeitragDo, Nov 02, 2006 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityDistance ist die schnellste Variante


~VERSCHOBEN~

falsches Board
Dreamora
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mas93

BeitragDo, Nov 02, 2006 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
danke,das mit dem pythagoras is noch n bisschen zu hoch für mich aber der befehl entitydistance ist cool.

So weit ich weiß geht der aber nur mit entitys,oder??
 

Dreamora

BeitragDo, Nov 02, 2006 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles was in 3D existiert ist eine Entity (egal ob mesh, terrain, pivot, sprite oder was auch immer)

Du kannst nix in 3D machen, ohne das es eine Entity ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

mas93

BeitragDo, Nov 02, 2006 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ohh wenn das so ist.....danke

StepTiger

BeitragDo, Nov 02, 2006 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
EntityDistance ist die schnellste Variante...

richtig Smile

wird durch diesen code schnell bewiesen:
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

nums=100000

cam=CreateCamera()
cam2=CreateCamera()

PositionEntity cam2,1000,1000,0

Local t[2]

t[0]=MilliSecs()
For x=1 To nums
   r=EntityDistance(cam,cam2)
Next
t[0]=MilliSecs()-t[0]

t[1]=MilliSecs()
For x=1 To nums
   r=dis#(cam,cam2)
Next
t[1]=MilliSecs()-t[1]

For x=0 To 1
   Print t[x]
Next

WaitKey
End

Function dis#(e1,e2)
   Return Sqr#((EntityX(e1)-EntityX(e2))*(EntityX(e1)-EntityX(e2)) + (EntityY(e1)-EntityY(e2))*(EntityY(e1)-EntityY(e2)) + (EntityZ(e1)-EntityZ(e2))*(EntityZ(e1)-EntityZ(e2)))
End Function


das untere ist übrigens die Variante mit Pythagoras, die da nicht mehr besagt als:
in einem rechtwinkligen Dreieck ABC mit C als Hypotenuse gilt: a^2+b^2=c^2

daraus schlussfolgert sich
xdis^2+zdis^2=xzdis^2
und daraus:
xzdis^2+ydis^2=xyzdis^2

also eingesetzt:
xdis^2+zdis^2+ydis^2=xyzdis^2

oder:
sqr(xdis^2+ydis^2+zdis^2)=xyzdis

Und schon hast du deine Distanz. Darüber nachzudenken geht wesentlich schneller, als es zu erklären Very Happy
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

PowerProgrammer

BeitragDo, Nov 02, 2006 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast das so kompliziert erklärt^^

Ich hab mal ne ganz einfache Skizze gemacht:
user posted image

Ein Bild sagt mehr als tausend Worte...

Edit:
Oh, so dumm, hatte die datei "phytagoras.png" gennant, ich verbesser das mal eben schnell Embarassed
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

DerHase

BeitragFr, Nov 03, 2006 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, da hab ich echt Mist erzählt, naja zur meiner Rettung will ich sagen, dass die EntityXYZ das so langsam machen, mit konkreten Zahlenwerten ist es genau so schnell Crying or Very sad
Play Satyr!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group