Abstand zwischen 2 Punkten in 3D

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

the FR3AK

Betreff: Abstand zwischen 2 Punkten in 3D

BeitragMo, Nov 24, 2008 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hiho,
hat jemand vielleicht eine Idee, wie ich den Abstand von 2 Punkten in einem 3 Dimensionalen Raum errechnen kann? Für 2D weiss ich wie es geht aber bei 3D hab ich keine Ahnung...


mfg

Smily

BeitragMo, Nov 24, 2008 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier brauchst du 2 mal pythagoras

tmp = sqr/(x_abs^2)+(y_abs^2))
abstand = sqr((tmp^2)+(z_abs^2))

Angabe ohne Gewähr. Müsste aber funktionieren.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

TimBo

BeitragMo, Nov 24, 2008 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

vll. mit EntityDistanze oder so.
Bin leider in 3D nicht so erfahren.

Wie diese Funktion arbeitet weiß ich auch nicht genau.
Aber ich denke das es wie in 2D auch ist.
Du rechnest mit Pythaguras den Abstand auf der XZ ebene aus.
Und dann rechnest du mit Pythaguras den abstand der XY ebene aus, dann nimmst du diese
als neue Grundseite und dann müsstest du es haben.
Ich mach gleich mal ne Skizze.

Viele Grüße
TimBo

Edit:
Smily0412 war schneller

meine Grauselige Skizze, vll hilft sie dir:

user posted image
  • Zuletzt bearbeitet von TimBo am Mo, Nov 24, 2008 13:28, insgesamt einmal bearbeitet

the FR3AK

BeitragMo, Nov 24, 2008 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah danke, aber smily könntest du mir die Formel noch kurz erklären? Ich versteh nicht genau was x_abs y_abs und z_abs sein sollen Wink

Achja EntityDistance ist nicht möglich, da ich so eine Funktion in C++ (Irrlicht) Programmieren will und ich keine Funktion dazu gefunden habe...und auf dem Irrlicht Forum bekomme ich nicht so schnell eine Antwort wie hier Wink

mfg

TimBo

BeitragMo, Nov 24, 2008 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
tmp = sqr/(x_abs^2)+(y_abs^2))
abstand = sqr((tmp^2)+(z_abs^2))


x_abs ist der Abstand beider Punkte auf der X-Achse, kann man mit x1-x2 errechnen.
y-abs ist der Abstand beider Punkte auf der Y-Achse, kann man auch mit y1-y3 errechnen.

tmp ist der abstand beider Punkte auf der xy - Ebende, errechnet mit Pythaguras

den Abstand errechnet man, indem man den Abstand auf der XY - Ebene als Kathede und den
Abstand der Z ebende als Ankathede benutzt.
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

D2006

Administrator

BeitragMo, Nov 24, 2008 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht genauso wie in 2D, nur mit dem zusätzlichen Parameter.

Code: [AUSKLAPPEN]
ab#  = Sqr( (x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2 )


EDIT: noch schicker als Wiki-Grafik (und als klickbarer Link für ungläubiger Wink )
user posted image
  • Zuletzt bearbeitet von D2006 am Mo, Nov 24, 2008 13:35, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragMo, Nov 24, 2008 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder gleich vereinfacht:
Distanz = sqr(a²+b²+c²), wobei a, b und c die Abstände der beiden Punkte auf den einzelnen Achsen sind.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

E. Urbach

ehemals "Basicprogger"

BeitragMo, Nov 24, 2008 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Wozu zweimal Wurzel ziehen und unnötig Rechenzeit verschwenden? Einfach Term umformen:

Code: [AUSKLAPPEN]
dist = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2 + (z2 - z1) ^ 2)


Edit: Ich bin zu langsam Smile
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
  • Zuletzt bearbeitet von E. Urbach am Mo, Nov 24, 2008 13:35, insgesamt 2-mal bearbeitet

BladeRunner

Moderator

BeitragMo, Nov 24, 2008 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
3-in-a-row Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Nov 24, 2008 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist das wirklich schneller als EntityDistance wie TimBo schon beschrieben hatte?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

D2006

Administrator

BeitragMo, Nov 24, 2008 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal ab davon, dass nicht gesagt wurde, es gehe um Blitz3D, würde ich ganz stark vermuten, dass EntityDistance einfach dasselbe macht.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

E. Urbach

ehemals "Basicprogger"

BeitragMo, Nov 24, 2008 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@hectic: Die Diskussion hatten wir schonmal.
Er braucht es ja für Irrlicht/C++.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik

TimBo

BeitragMo, Nov 24, 2008 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

wenn Blitz ^2 rechnet, dann geht das ganz langsam.
Man sollte sqr ( a*a + b*b + c*c ) rechnen, müsste auch in c++ schneller gehen.
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

the FR3AK

BeitragMo, Nov 24, 2008 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Soo es funktioniert ^_^
danke für die Hilfe!

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group