Ich versuche, eine prozedurale Form aus Quads zu erstellen.Suchen der Zeile eines Objekts
Ich möchte in der Lage sein, jede Quad zu nehmen und es Index zu finden die Zeile zu verwenden, dass es in ist.
Nimm Quad 9 aus dem Bild. Welche Art von Funktion kann ich verwenden, um die Zeile zu finden (in diesem Fall ist es 2 von einem 0-Index). Was ist mit Quad 20?
Die Reihen ändern sich immer in der Breite um 2 Quads, eine von jeder Seite entfernt.
Es tut mir leid, es ist ein wenig verworren, aber ich bin mir nicht sicher, wie ich das Problem angehen soll.
Wie können wir, wie viele Quads in jeder Reihe wissen? Oder gibt es jedes Mal ein Diagramm? Welche interne Repräsentation haben Sie gewählt? Zum Beispiel kann ich mir eine Summierung vorstellen, bis die Anzahl der Quads in der aktuellen Zeile Sie über den Index bringen würde (oder mabe gleich, erfordert Gedanken), aber das setzt voraus, dass Sie ein Array mit der Anzahl der Quads in jeder Zeile haben. –
Nun, die Form wird durch den Durchmesser (unsere Eingabe) definiert, der immer ein Vielfaches von zwei ist (4, 6, 8, 10), sodass er über die X- und Y-Achse gespiegelt wird, ohne Quads zu teilen. Da wir zwei Quads für jeden Schritt entfernen, können wir die Anzahl der Quads in einer Reihe erhalten, indem wir das Doppelte der Distanz zum Zentrum subtrahieren. So können wir im Beispielbild die zweite Zeile von oben betrachten. Der Abstand zum Mittelpunkt = (Durchmesser/2) - Reihe und numOfQuadsinRow = Durchmesser - (Abstand * 2) =. Die zweite Zeile hat also einen Abstand von 1, 6 - (1 * 2) = 4. –
In Ihrem 0-Indexschema beginnt die n-te Zeile bis zur Mitte mit n (n + 1) und endet mit (n + 1) (n + 2) -1. Es fühlt sich an, als ob man eine Quad-Zahl bis zur Mitte gegeben hätte, man könnte die quadratische Gleichung n^2 + n-quad = 0 lösen und die Antwort abschneiden. (Nimm auch das Plus-Quadrat in der quadratischen Formel). Noch zu vertiefen ist, wie Sie wissen, wo die Mitte ist, indexweise, und wie man Symmetrie verwendet, um einen Fall über die Mitte hinaus auf einen davor zu reduzieren. –