/ / Begrenzungsrahmen umwandeln, um Schnittpunkt zu entfernen - c #, math

Begrenzungsrahmen umwandeln, um den Schnittpunkt zu entfernen - c #, math

Ich versuche das Folgende umzusetzen. Ich habe zwei Grenzen A und B, ich möchte Box B so transformieren, dass der Schnittpunkt zwischen A und B nicht mehr existiert. Ich bin nicht sicher, wie man die Verschiebung berechnet, ich möchte die Richtung beibehalten, d. H. Die rote Linie.

Begrenzungskästen

Ich habe nicht viel Code geschrieben, bleibt ziemlich bei der Mathematik.

var a = new Rectangle(40, 40, 20, 20);
var b = new Rectangle(25, 30, 20, 20);

Antworten:

1 für die Antwort № 1

Für den von Ihnen vorgesehenen Fall kann die Verschiebung in b.x (dx) als a.x - b.length - b.x. Die Verschiebung in b.y (dy) kann dann als Konstanthaltung der Steigung berechnet werden. Also nach dy in lösen dx/dy = (a.x - b.x)/(a.y - b.y)und das bringt dir auch die Veränderung in y.

Dies ist jedoch spezifisch für Siebeschrieben. Unter anderem müssen Sie darüber nachdenken, was passiert, wenn A und B umgedreht werden, was passiert, wenn Ax = B.x, was passiert, wenn Ay = B.y ist und was passiert, wenn der Unterschied in x kleiner ist als der Unterschied in y. Das Zeichnen von Bildern wird wahrscheinlich immens helfen, wenn Sie es auf Diagrammpapier haben, auf leerem Computerpapier, wenn Sie dies nicht tun. Ich hoffe, das ist ein guter Anfang.