Autor Beitrag
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1700
Erhaltene Danke: 307

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 10.01.17 17:24 
Die Frage verstehe ich nicht so ganz. Wenn du den Abstand zwischen den beiden Koordinaten ermitteln möchtest, dann brauchst du nur den Quelltext zu lesen. In den Settern der Eigenschaften Mittelpunkt und Position ist jene "Formel" gegeben, ganz ohne Pythagoras.
Und würdest du ihn dennoch anwenden, so würdest du feststellen, dass die daraus errechnete Hypotenuse deinem Radius entspricht.
Mach dir Skizzen auf einem Blatt Papier, dann erkennst du es umso besser.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4158
Erhaltene Danke: 824


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 10.01.17 18:27 
Es ändert sich nur das Vorzeichen. Und jetzt überleg nochmal wie wichtig beim Satz des Pythagoras das Vorzeichen der beteiligten Seiten sind um die Länge der dritten Seite zu berechnen.
YK18415 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 11.01.17 09:53 
Stimmt, dann sind die Vorzeichen egal.
Naja, ich möchte ja schauen, ob der Abstand zwischen Kreismittelpunkt und Rechtecksecke kleiner als der Radius ist...

Bei der oberen rechten Ecke habe ich folgendes:
ausblenden C#-Quelltext
1:
2:
3:
double xe1 = this.X - otherObject.X;
double ye1 = this.Y - otherObject.Y;
double ae1 = Math.Sqrt(Math.Pow(xe1, 2) + Math.Pow(ye1, 2));

otherObject ist mein Kreis.

Aber das ist doch nicht der gängige Weg?

Gruß

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4158
Erhaltene Danke: 824


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 11.01.17 10:04 
Der gängige Weg für was?
YK18415 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mi 11.01.17 10:08 
Der gängige Weg für so eine Kollisionsabfrage.

Irgendetwas scheine ich falsch zu machen, da er mir eine Kollision anzeigt, obwohl mein Kreis noch nicht im Rechteckspunkt liegt...
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4158
Erhaltene Danke: 824


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 11.01.17 11:06 
Dort wo man Kollisionsabfragen üblicherweise macht hat man vermutlich nie echte Kreise sondern Polygone. Für den Test ob sich ein Punkt in einem Polygon befindet gibt es sicher schnelleres als Pythagoras.

Dein Code zur Abstandsberechnung sieht richtig aus. Ein Kreis und ein Rechteck könne sich aber schneiden ohne das eine Ecke im Kreis ist. Ob das dein Problem ist oder ein anderes kann ich nicht sagen dafür ist mir der Inhalt dieses Threads zu Wirr um tatsächlich zu helfen.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1700
Erhaltene Danke: 307

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 11.01.17 18:02 
Wenn es ihm um Kollisionsberechnungen(2D) geht, dann sollte er sich darüber schlau machen: 2D-Kollisionserkennung
Auch hier empfehle ich Skizzen zu erstellen, um den Rechenvorgang im verlinkten Beitrag besser nachvollziehen zu können.
Erst wenn dies verstanden wurde, dann darfst du dich an der Programmierung versuchen.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)