2016-04-23 5 views
1

Ich möchte zwei Arrays von Koordinaten, die zwei Bereiche der konzentrischen Quadrate oder sogar Kreise (Quadrate sind die einzigen, die ich denken konnte und tatsächlich zu machen versuchen, aber Am Anfang und am Ende wollte ich einfache quadratische konzentrische Kreise).Wie mache ich zwei Koordinatenfelder, konzentrische Quadrate

Einfach gesagt, für n<m, um Bereiche von Koordinaten (m*2-n*2) und (n*2) zu bekommen.

Ich habe mehr ‚für‘ Schleifen wie der Versuch:

a,b=(m-n)/2,(m-(m-n)/2) 
ncrd,coord=[],[] 
x,y=range(0,m*10,10),range(0,m*10,10) 
k,l=0,0 
for i in range(m): 
    for j in range(m): 
     coord.append([0,0]) 
     coord[k]=[x[i],y[j]] 
     k+=1 
for i in range((m-n)/2,m-(m-n)/2): 
    for j in range((m-n)/2,m-(m-n)/2): 
     ncrd.append([0,0]) 
     ncrd[l]=coord[i*m+j] 
     l+=1 
    coord[i*m:i*m+j]=[] 
    rnd.shuffle(coord),rnd.shuffle(ncrd) 

bin ich ziemlich sicher, dass es falsch ist, weil es nicht funktioniert und die Logik klingt nicht. Ich habe versucht, es mathematisch zu schreiben, aber Leerzeichen zu zeichnen.

Zusammenfassend: müssen auf riesigen m * m Array ([x, y]) erstellen und ein Stück davon in der Mitte ausschneiden und das auf einen anderen Wert zuweisen. Im obigen Code war coord und ncrd.

Bearbeiten: Vergessen zu erwähnen, dass m und n am Anfang des Programms eingegeben werden, so dass sie keine spezifischen Werte sind und können von 3 bis zu jedem möglichen Wert, den mein Computer nehmen kann.

+0

Sie erwähnen konzentrische Formen, aber was sollte der Radius von jeder Form sein? Sollte man den doppelten Radius des anderen haben? Sollten ihre Radien unabhängig voneinander eingestellt werden? –

+0

@JasonPearson Ich bin mir nicht sicher, ich brauche nur die erste Fläche, um (n) Koordinatenwerte zu haben, aber mindestens um 5 beabstandet, und die Außenfläche um (mn) Koordinatenwerte, aber um mindestens 10 beabstandet Ich habe das noch nicht durchdacht, aber ich weiß, dass es für meine Handlung am besten aussehen würde. – Tigs

+0

@JasonPearson auch sorry, vergessen zu erwähnen in OP, wird jetzt bearbeiten: die Werte 'm' und 'n' werden vom Benutzer gewählt, so muss ich einen Weg finden, einen Code zu machen, der diese Art von Sachen mit irgendwelchen macht positive ganze Zahl – Tigs

Antwort

0

Etwas entlang dieser Linie würde für konzentrische quadratische Bereiche arbeiten. Für zirkuläre müssen Sie den logischen Ausdruck entsprechend ändern.

Hinweis: Das Mischen der Ergebnisse am Ende wurde weggelassen.

m, n = 9, 5 
lo = (m-n) // 2 
hi = m-lo-1 

coords, ncoords = [], [] 
for x in range(m): 
    for y in range(m): 
     (ncoords if (lo <= x <= hi) and (lo <= y <= hi) else coords).append((x, y)) 

print(coords) 
print(ncoords) 
+0

Beantwortet dies nicht Ihre Frage? – martineau

Verwandte Themen