AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

zwei Quader vergleichen

Ein Thema von shmia · begonnen am 26. Feb 2008 · letzter Beitrag vom 27. Feb 2008
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

zwei Quader vergleichen

  Alt 26. Feb 2008, 16:22
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 ?
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: zwei Quader vergleichen

  Alt 26. Feb 2008, 16:42
Hallo Andreas,

eine spontane Idee: Sortiere die Dimensionierung absteigend und vergleiche paarweise auf kleiner-oder-gleich für "passt rein".

Freundliche Grüße
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: zwei Quader vergleichen

  Alt 26. Feb 2008, 19:26
Zitat von shmia:
Wie könnte man das ermitteln, ohne in If-Abfragen zu ertrinken ?
Spontane Idee von mir: Die Fälle der Reihe nach reduzieren. Wenn das Volumen von A größer ist als das von B, passt A garantiert nicht in B rein. Wenn die längste Kannte von A länger ist als die längste Kante von B, auch nicht. Was könnte A noch für Eigenschaften haben, die verhindern könnten, daß er in B reinpasst?
Das Problem ließe sich sicher auch mathematisch lösen, aber lineare Algebra war noch nie meine Stärke.
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: zwei Quader vergleichen

  Alt 26. Feb 2008, 19:32
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...
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: zwei Quader vergleichen

  Alt 26. Feb 2008, 19:47
Zitat von Dax:
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...
Achso! Jetzt habe ich erst verstanden, was er gemeint hat. Stimmt! Ich glaube, ich denke da sehr "haptisch". Ich hatte mir das als LEGO vorgestellt...
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: zwei Quader vergleichen

  Alt 27. Feb 2008, 12:27
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;
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: zwei Quader vergleichen

  Alt 27. Feb 2008, 12:37
Eventuell musst du deinen Sortieralgorithmus nochmal überdenken.

EDIT: Wird schon schief gehen, ich hatte den call-by-reference in SwapCurrency() übersehen ...
  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 00:24 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