![]() |
zwei Quader vergleichen
Ich habe zwei Quader jeweils mit Länge, Breite und Höhe und möchte nun wissen, ob Quader A vollständig in Quader B hineinpasst.
Beispiel: Quader A: Länge: 20 Breite: 40 Höhe: 5 Quader B: Länge: 45 Breite: 20 Höhe: 5 Also passt A vollständig in B; man muss ihn nur drehen. Wie könnte man das ermitteln, ohne in If-Abfragen zu ertrinken ? |
Re: zwei Quader vergleichen
Hallo Andreas,
eine spontane Idee: Sortiere die Dimensionierung absteigend und vergleiche paarweise auf kleiner-oder-gleich für "passt rein". Freundliche Grüße |
Re: zwei Quader vergleichen
Zitat:
Das Problem ließe sich sicher auch mathematisch lösen, aber lineare Algebra war noch nie meine Stärke. |
Re: zwei Quader vergleichen
Nunja, marabu hat schon recht: wenn für jede Seite Bi aus sort(B) für die Seite Ai aus sort(A) gilt, dass Ai <= Bi, dann passt A in B...
|
Re: zwei Quader vergleichen
Zitat:
|
Re: zwei Quader vergleichen
Ich denke mal, das Vorsortieren der Dimensionen ist wohl am Besten.
Hab's jetzt so gelöst (aber noch nicht getestet):
Delphi-Quellcode:
function CompareBoxes(a1,a2,a3,b1,b2,b3:Currency): Integer;
procedure SwapCurreny(var a, b : Currency); var t : Currency; begin t := a; a:= b; b := t; end; procedure Sort3(var x,y,z:Currency); begin if x > y then SwapCurreny(x,y); if x > z then SwapCurreny(x,z); if y > z then SwapCurreny(y,z); end; begin Sort3(a1,a2,a3); Sort3(b1,b2,b3); if (a1 = b1) and (a2 = b2) and (a3 = b3) then Result := 0 // Quader sind gleich else if (a1 <= b1) and (a2 <= b2) and (a3 <= b3) then Result := 1 // Quader a ist in Quader b enthalten else if (a1 >= b1) and (a2 >= b2) and (a3 >= b3) then Result := -1 // Quader b ist in Quader a enthalten else Result := 2; // Quader a und b durchdringen sich end; |
Re: zwei Quader vergleichen
Eventuell musst du deinen Sortieralgorithmus nochmal überdenken.
EDIT: Wird schon schief gehen, ich hatte den call-by-reference in SwapCurrency() übersehen ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz