En kolay çözüm, ve en çok aradığınız olası olanı varsayalım, yalnızca min/max x & y değerlerini bulmak için kullanılan eksen hizalama sınırlayıcı kutusunu hesaplamaktır. bunlardan bir kutu inşa etmek.
point[] points = [[x = -2, y = 0], [x = 1, y = 2], [x = 1, y = 1], [x = -1, y = -2]];
box bounds = bounding_box(points);
:
Sana Yani bunlar verilmiş senin geometri içinde ...
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 }
};
}
ifade edilir türlerini gönderme yapmamış verilen, size bunun için yapay olarak kodu vereceğiz
aşağıdakilerden tüm doğru olacaktır: elbette
bounds.topleft == [x = -2, y = 2];
bounds.topright == [x = 1, y = 2];
bounds.bottomleft == [x = -2, y = -2];
bounds.bottomright == [x = -1, y = -2];
, sistem t düşük koordinatları vardır koordinatı op (ör. tipik bir ekran gibi - o zaman hesaplamayı tersine çevirmelisiniz; veya sonucu önce nesne-boşlukta hesaplayın ve daha sonra mantıksal alana dönüştürün.
Gelecekte isteğe göre hizalanmış bir kutuyu güncellemek için gelecekte karar vermeniz durumunda, dört köşeyi ifade eden kutunun türü için gittim (aynı yöntemle bir nokta kullanabilirsiniz). Bunun için + 2 vektörler).
Ne yazık ki, bu sorunla nereden başlayacağımı bilmiyorum. Koordinatlarımın bir dizi yazı dizisinde olduğunu ve buradan nasıl hareket edeceğime emin olduğum aşamadayım. – CSharpened
@ İki türünüz olduğunu düşünün: eksen hizalama sınırlayıcı kutu; basitçe min x/y ve max x/y değerini bularak bulunur. Ya da daha karmaşık olan keyfi yönlendirilmiş sınırlayıcı kutunuz var (http://en.wikipedia.org/wiki/Minimum_bounding_box_algorithms). Eğer teknik olarak hala bir kutu çiziyor olsanız da, dünyanın eğriliğini hesaba katmanız gerekiyorsa, bu daha karmaşık hale getirilir, ancak aslında bunun yerine bir küre yüzeyinin bir bölümüdür (muhtemelen ihtiyacınız olan şey için çok fazla) –
Görüyorum. Kutu için 4 koordinat sağlayacak bir işleve ihtiyacım var. Yani iki X değeri ve iki Y değeri. Bunu yapmanın en iyi yolunun koordinatlarımı bölmek ve daha sonra en düşük X değerini ve minimum Y değerini bulmak için hepsini karşılaştırmak olduğunu söyleyebilir miydiniz? Eğer bunu yapsaydım, o zaman sadece bir minX değeri ve bir maxY değeri alacağımı varsayardım?Bu iki rakamdan diğer X ve Y değerlerini hesaplamak mümkün mü? Üzgünüm biraz kayıp gibi görünüyorsa. Mekansal alanım değil. – CSharpened