2016-04-23 11 views
1

同心円の2つの領域である2つの座標の配列を作成したいと思います(四角は私が考えて実際に作成しようとしたものですが、最終的に私は単純な四角い同心円を求めていました)。2つの座標の同心円を作る方法

n<mの場合は、(m*2-n*2)(n*2)の領域を取得するだけです。

私のようなループ「の」複数しようとしてきた:

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) 

私はそれが動作しないので、それは、間違っているかなり確信しているとロジックが聞こえるされていませんが。数学的に書くことを試みたが、空白を描く。

合計では、巨大なm * m配列([x、y])上に作成し、その塊を途中で切り取り、別の値に割り当てる必要があります。上のコードではcoordncrdでした。

編集:プログラムの開始時にmnが入力されているので、特定の値ではなく、3からコンピュータが取ることができるすべての値に及ぶ可能性があります。

+0

あなたは同心円形の作成について言及していますが、各図形の半径はどのようにする必要がありますか? 1つは他の半径の2倍の半径を持つべきですか?彼らの半径は独立して設定する必要がありますか? –

+0

@JasonPearson私は、(n)の座標値を持つのに最初の領域が必要ですが、少なくとも5で区切り、外側の領域には(mn)の座標値を持つ必要がありますが、本当にまだこれを考えていないが、それは私のプロットのために最高に見えることを知っている。 – Tigs

+0

@JasonPearsonまた申し訳ありませんが、OPで言及するのを忘れてしまい、今編集するでしょう:値 'm'と 'n'はユーザーによって選択されますので、この種のものを作るコードを作る方法を見つける必要があります正の整数 – Tigs

答えて

0

これらの線に沿ったものは、同心円の四角い領域で機能します。循環型の場合、それに応じて論理式を変更する必要があります。

注:結果の最後のシャッフルは省略されています。

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

これはあなたの質問に答えませんか? – martineau

関連する問題