Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#10

AW: Drei Werte als Punkt im Dreieck darstellen

  Alt 2. Okt 2012, 13:00
Um es mal wieder auf die reine Berechnung des Punktes zu beschränken, da ich über die Zeichenfläche ja nichts weiß:

Delphi-Quellcode:
procedure CalcPoint(A, B, C: Double; var X, Y: Double);
{
  es gilt: -0.5 <= X <= 0.5 und 0 <= Y <= 1
  X=0, Y=0 entspricht dem Mittelpunkt der unteren Linie des Dreiecks
  und bedeutet (A = 0) und (B = C)
}

begin
  Assert((A >= 0) and (B >= 0) and (C >= 0));
  if IsZero(B + C) then
    X := 0
  else
    X := C/(B + C) - 0.5; // Verhältnis C:B
  if IsZero(A + B + C) then
    Y := 0.5
  else
    Y := A/(A + B + C); // Verhältnis A:(B+C)
  X := X * (1 - Y);
end;
Allerdings ist das auch nur an den Rändern und in der Mitte gemäß den Randbedingungen. Für die Proportionalität dazwischen gibt es unterschiedliche Lösungen.

@Bummi: jemand ohne Kompetenz (A = B = C = 0) erzeugt bei deinem Code ein EDivByZero.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat