2 Stimmen

Wie bringe ich zwei Rechtecke dazu, sich voneinander zu entfernen?

Nehmen wir an, ich habe zwei Rechtecke, die sich wie folgt überlappen...

Alt-Text http://filebox.me/files/u8atnxd34_overlap1.png

Und ich will, dass sie so enden...

Alt-Text http://filebox.me/files/jt8ef1t44_overlap2.png

Wie würde ich die Position berechnen, die ich hinzufügen muss, damit sich die Rechtecke voneinander entfernen?

Anmerkung: Ich habe gefunden ce Frage, aber sie sagt mir nicht, wie ich die Rechtecke tatsächlich verschieben kann.

Alle gehen davon aus, dass ich das Rechteck nach unten verschieben möchte, aber ich möchte eigentlich, dass sich das Rechteck in die Richtung bewegt, die am logischsten ist. Wenn also das Rechteck ganz rechts vom ersten Rechteck liegt und sich um 1 Pixel nach links bewegt, würde es sich nicht nach unten, sondern nach rechts bewegen.

2voto

Pratik Deoghare Punkte 32638
__________
|    ____|____
| A |    |    |
|___|____|    |
    |      B  |
    |_________|

if [ 
     (TopLeftOfA.Y + A.Height - TopLeftOfB.Y)
     < 
     (TopLeftOfA.X + A.Width  - TopLeftOfB.X)
   ]
    TopLeftOfB.Y = TopLeftOfA.Y + A.Height
else 
    TopLeftOfB.X = TopLeftOfA.X + A.Width

0voto

nik Punkte 845

Verschieben Sie einfach das erste Rechteck in eine beliebige Richtung vom zweiten Rechteck.

0voto

Adrian Regan Punkte 2240

In genau der von Ihnen gezeigten Konfiguration:

wobei a = das Rechteck im Vordergrund und b = das Dreieck im Hintergrund ist.

a.Top = b.Bottom; // Add +1 to have it just past the bottom.

0voto

user192344 Punkte 1134

rectangle2.top = rectangle1.bottom+1 (javascript)

0voto

Nealv Punkte 6706

Noch einfacher:

die Y-Koordinaten des unteren Teils des ersten Rechtecks auf die Y-Koordinaten des oberen Teils des zweiten Rechtecks setzen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X