Najprostszym rozwiązaniem, i zakładam, że najprawdopodobniej szukasz, jest obliczenie wyrównanego do osi prostokąta ograniczającego, który jest po prostu przypadkiem znalezienia wartości min/max x & y, a następnie budując z nich pudełko.
dam ci pseudo-kod, który, biorąc pod uwagę, że nie napisali rodzaje że geometria jest wyrażona w ...
type point { float x; float y; }
type box { point topleft; point topright; point bottomleft; point
function bounding_box(points)
{
xmin = min(points.x)
xmax = max(points.x)
ymin = min(points.y)
ymax = max(points.y)
return new box{
topleft = { x = xmin, y = ymax },
topright = { x = xmax, y = ymax },
bottomleft = { x = xmin, y = ymin },
bottomright = { x = xmax, y = ymin }
};
}
Więc podane są:
point[] points = [[x = -2, y = 0], [x = 1, y = 2], [x = 1, y = 1], [x = -1, y = -2]];
box bounds = bounding_box(points);
Wszystkie poniższe będzie prawdziwe:
bounds.topleft == [x = -2, y = 2];
bounds.topright == [x = 1, y = 2];
bounds.bottomleft == [x = -2, y = -2];
bounds.bottomright == [x = -1, y = -2];
oczywiście, jeśli układ współrzędnych ma najniższe współrzędne na t op (np. jak typowy wyświetlacz) - wtedy musisz odwrócić obliczenia; lub najpierw obliczyć wynik w przestrzeni obiektowej, a następnie przekształcić go w przestrzeń logiczną.
Zauważyłem, że szukałem typu w polu, które wyraża wszystkie cztery rogi, na wypadek gdyby w przyszłości zdecydowałeś się na aktualizację do arbitralnie wyrównanego pola (chociaż z tego samego powodu możesz po prostu użyć punktu + 2 wektory na to).
Niestety nie mam pojęcia, od czego zacząć. Jestem na etapie, w którym mam swoje współrzędne w liście typu ciąg i nie jestem pewien, jak przejść dalej. – CSharpened
@Well masz dwa typy: wyrównane w osi okno ograniczające; który można znaleźć po prostu przez znalezienie min x/y i max x/y. Lub masz dowolnie zorientowane pole graniczne, które jest bardziej skomplikowane (http://en.wikipedia.org/wiki/Minimum_bounding_box_algorithms). Jest to bardziej skomplikowane, jeśli musisz wziąć pod uwagę krzywiznę ziemi (co, mam nadzieję, nie masz), chociaż technicznie wciąż rysujesz pudełko, ale w rzeczywistości jest to część powierzchni kuli (prawdopodobnie za dużo za to, czego potrzebujesz) –
Rozumiem. Potrzebuję funkcji, która dostarczy 4 współrzędne dla pudełka. Tak więc dwie wartości X i dwie wartości Y. Czy sugerowałbyś, że najlepszym sposobem na zrobienie tego byłoby podzielenie moich współrzędnych, a następnie porównanie ich wszystkich w celu znalezienia najniższej wartości X i minimalnej wartości Y? Jeśli miałbym to zrobić, zakładam, że otrzymam tylko wartość minX i maksymalną wartość?Z tych dwóch liczb można obliczyć pozostałe wartości X i Y? Przepraszam, jeśli jestem trochę zagubiony. Przestrzenny nie jest wcale moim obszarem. – CSharpened