2017-12-06 22 views
0

Ich habe zwei Bereiche, die beide in ihrer dorts.size angegeben sind. Jetzt ist die Z-Achse für mich nicht wichtig, da ich in 2D arbeite. Ich möchte diese Vektoren hinzufügen, also habe ich einen Vektor, der den verbundenen Bereich darstellt. Das einfache Hinzufügen dieser Vektoren funktioniert nicht. Die Art, wie das Gebiet am Ende aussieht, ist nicht wichtig, es ist nur wichtig, dass die Größe die gleiche ist, beide Bereiche zusammen.Unity/C# Hinzufügen von zwei Bereichen, die durch zwei Vektoren dargestellt werden

Edit: Ich habe den bounds.size von zwei polygoncolliders und ich möchte, um einen Wert erhalten, der die bounds.size der beiden polygoncolliders kombiniert

enter image description here

Bereich 1 und Bereich repräsentiert 2 kombiniert

+1

Das Hinzufügen eines Codebeispiels würde viel mehr Sinn machen –

+0

Ein Bild von dem, was Sie erreichen möchten, wäre auch hilfreich. – ryeMoss

+0

Ich habe ein Bild hochgeladen und versucht, mein Problem klarer zu erklären – Zarazas

Antwort

2

Die Art, wie das Gebiet am Ende aussieht, ist nicht wichtig, es ist nur wichtig, dass die Größe gleich ist, beide Bereiche zusammen.

Da es nahezu unendlich viele Möglichkeiten sonst, ich werde mich auf Ergebnisse beschränken, in denen x = y, aus dem einfachen Grund, dass Sie nicht mit dummen Vektoren wie (0.5,80000) am Ende, sondern ein ausgewogener (200,200). Diese

ist gar nicht so schwer, wenn man es auch dreht algebraisch:

float result_area = first_area + second_area; 

den Bereich Berechnung ist einfach:

float area = myVector.X * myVector.Y; 

So machen die Summe der Flächen auch leicht:

float result_area = myFirstVector.X * myFirstVector.Y + mySecondVector.X * mySecondVector.Y; 

Zum Beispiel sagen wir first_area = 50 und second_area = 350, so dass sich result_area = 400 ergibt;

Da wir zu den Ergebnissen sind begrenzt, wo x = y, ist das Ergebnis der Quadratwurzel des Gebietes:

float theSquareRoot = Math.Sqrt(result_area); 
myResultVector.X = theSquareRoot; 
myResultVector.Y = theSquareRoot; 

Wie gesagt, es gibt viele andere mögliche Ergebnisvektoren. In anderen Fällen müssen Sie entweder ein bestimmtes Verhältnis definieren (zB ein Verhältnis von 1 : 4 würde Ihnen (10,40) für das gleiche Beispiel geben), aber die Berechnung ist ein bisschen schwieriger und Sie haben erwähnt, dass Sie sich nicht um die genaue Form sowieso.

Sie könnten auch einfach einen Vektor erstellen, wo X = result_area und Y = 1 (oder umgekehrt), ohne eine Quadratwurzel zu berechnen.


Beachten Sie, dass Sie es übertrieben haben. Die Fläche eines Objekts ist ein eindimensionaler Wert (eine Zahl); Sie drücken es jedoch mit einem zweidimensionalen Wert (einem Zahlenpaar) aus, um sie darzustellen.
Da Sie sich nicht um bestimmte X/Y-Werte kümmern, nur was ihr Produkt ist, würde ich vorschlagen, dass Sie Vektoren möglichst vermeiden, damit Sie es nicht unnötig kompliziert machen.

+0

Vielen Dank, danke, dass du mich vom Wald weggebracht hast, ich habe das Problem komplizierter gemacht als es ist :) – Zarazas

Verwandte Themen