/ / Przekształć obwiednię, aby usunąć przecięcie - c #, matematyka

Przekształć obwiednię, by usunąć skrzyżowanie - c #, matematyczne

Próbuję zaimplementować następujące. Mam dwa granice A i B, chcę przekształcić pole B tak, że przecięcie między A i B już nie istnieje. Nie jestem pewien, jak obliczyć zmianę, chcę utrzymać kierunek, tj. Czerwoną linię.

Obwiednie

Przystań nie napisał dużo kodu, dość utkwił w matematyce.

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

Odpowiedzi:

1 dla odpowiedzi № 1

Tak więc w przypadku, który podałeś, przesunięcie w b.x (dx) można obliczyć jako a.x - b.length - b.x. Przesunięcie b.y (dy) można następnie obliczyć w kategoriach utrzymania stałej nachylenia. Więc rozwiązuj dla dy in dx/dy = (a.x - b.x)/(a.y - b.y), a to również powoduje zmianę w y.

Jest to jednak specyficzne dla sprawyopisany. Między innymi trzeba pomyśleć o tym, co się stanie, jeśli A i B zostaną odwrócone, co się stanie, jeśli A.x = B.x, co się stanie, jeśli A.y = B.y, i co się stanie, jeśli różnica w x będzie mniejsza niż różnica w y. Obrazy rysunkowe zapewne ogromnie pomogą, na papierze wykresowym, jeśli go masz, na czystym papierze komputerowym, jeśli nie chcesz. Mam nadzieję, że to dobry początek.