AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt
Thema durchsuchen
Ansicht
Themen-Optionen

Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt

Ein Thema von Memnarch · begonnen am 4. Mär 2011 · letzter Beitrag vom 4. Mär 2011
Antwort Antwort
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt

  Alt 4. Mär 2011, 14:58
Nabend.
Brauche mal eure hilfe.

Also, angenommen ich habe ein Dreieck ABC und einen Punkt P,w elcher im Dreieck ABC liegt, so möchte ich die gewichtung der EckPunkte ABC zu Punkt P berechnen.
BeiSpiel: Wenn P auf PunktA leigt, ist die gewichtung von A = 1. Liegt P aber auf der SeiteA, ist die Gewichtung von A = 0. Dazwischen sind die übergänge dann fließend.

SchauBild(P ist der Grüne Punkt):
http://img851.imageshack.us/img851/4061/punkte.png

Meine herangehensweise wäre:
Gesamtfläche des Dreiecks berechnen, und dann die gewichtung der einzelnen Punkte ABC wie folgt:

Gewichtung von A = Fläche(PBC) / Gesamtfläche.
Gewichtung B = Fläche(PAC) / Gesamtfläche.
Gewichtung C = Fläche(PAB) / Gesamtfläche.

Stimmt dass so?
Dementsprechen müsste ja GewA + GewB + GewC = 1 sein oder? (von der theorethischen annahme, es gäbe keine rundungsfehler )

Edit: Also es sieht zumindest aus als ob es geht. Meine Depthmap sieht ok aus. (schreib an meinem Softwarerenderer, Depthmap calculation ist gerade angesagt)


MFG
Memnarch

Geändert von Memnarch ( 4. Mär 2011 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt

  Alt 4. Mär 2011, 15:10
Ich hätte es jetzt so gedacht,

Man denkt sich eine Gerade, welche durch P und den Punkt geht, zu welchem man die Gewichtung ausrechnen will,
darüber berechnet man den Schnittpunkt der Geraden mit der des Punktes gegenüberliegenen Geraden/Seite.
Nun hat man zwei Punkte, also Eckpunkt und Schnittpunkt, was wiederum eine Gerade ergibt und nun einfach nur noch schauen wo auf dieser geraden der Punkt P liegt.

Ich glaub Abstand P-Schnittpunkt durch Länge der Geraden Eckpunk-Schnittpunkt oder irgendwie so.
Die Endpunkte der Geraden vielleicht vorher prüfen, da bei den Berechnungen wohl auch mal ein Div-By-Zero entstehen kann.
> liegt P auf dem Eckpunkt, dann isses 1, liegt der auf dem Schnittpunkt, dann 0 und dazischen kann man sich ja wieder Prozentual den Abstand ausrechnen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt

  Alt 4. Mär 2011, 15:50
Ja soetwas hatte ich anfangs auch auf dem plan. Aber war imemr nen ziemlicher wust zum durchlesen .

Hab meine Technik überprüft, und joar, sie geht auch, und ist um einiges Kompakter(je nach funktionsverschachtelung^^").

Der weg den ich nehme, basiert auf dem selben um rauszubekommen ob punkt P innerhalb von Dreieck ABC liegt. Dabei werden die Flächen der Dreiecke PAB/PBC/PCA addiert und wenn sie dieselbe fläche wie ABC haben, liegt der punkt dadrin(und der Prozentuale Anteil der kleineren Flächen von der Gesamtfläche, ist die Gewichtung der jeweiligen Punkte ). Um FloatingPointfehler zu vermeiden(rundung etc), berechne ich aus den dreiecken nicht das Tatsächliche Dreieck, sondern das Quadrat(also Länge*Höhe anstatt Länge*Höhe/2, in kurzform). Erbringt ebenfalls dasselbe ergebnis, hat keine rundungsfehler und funktioniert super. Außerdem lässt sich die flächenberechnung für ein Dreieck leichter merken^^.

Wenn ich am WE zuhause bin, schreib ich den programmcode nochmal(is ja nich viel), da ich jetzt auf der Firma bin, und deswegen weder Screenies noch auszüge posten dürfte. Wen es interressiert, der kann sichs ja mal angucken.

MFG
Memnarch

Geändert von Memnarch ( 4. Mär 2011 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

AW: Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt

  Alt 4. Mär 2011, 16:18
Baryzentrische Koordinaten

Aber dass eine Division durch 2 Rundungsfehler auslöst, wage ich zu bezweifeln .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#5

AW: Dreieck: Gewichtung der Eckpunkte zu einem Innenliegenden punkt

  Alt 4. Mär 2011, 16:42
Äh war emin fehler. Wen man die fläche berechnet, und das in nen Integer kloppt, isses klar dass es fehler gibt >.<.

Dem Blatt über Baryzentrische Koordinaten kann ich noch nicht ganz folgen(mathemathische notationen waren trotz mathe als lieblingsfach NIE meine stärke^^"). Aber wenn ich schwer raten darf, das was da steht, hab ich hinbekommen .

MFG
Memnarch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz