2次元マトリックスでは、それぞれのIDの方向によって1つの直接接続された隣人を見つけたいと思います。2D行列で直接接続された隣人を見つけるにはどうすればいいですか?
私は何を意味:
X0 = X
Y0 = Y1
X1 = X + 1
Y1 = Y
×2 = X
Y2 = Y + 1
×3 = X - 1
Y3 = Y
又はグラフィックとして:
╔═══════╗
║ N ║
║ x,y-1 ║
║ ║
╔═══════╬═══════╬═══════╗
║ W ║ ║ E ║
║ x-1,y ║ x,y ║ x+1,y ║
║ ║ ║ ║
╚═══════╬═══════╬═══════╝
║ S ║
║ x,y+1 ║
║ ║
╚═══════╝
何年か前
私は同じ問題を抱えていたし、非常に向上させることができた醜いスイッチケースとそれを解決し、プログラミング始めた:
if (mode == 'Y'){
switch(direction){
case 1:
return -1;
case 2:
return 0;
case 3:
return 1;
case 4:
return 0;
default:
break;
}
}
if (mode == 'X'){
switch(direction){
case 1:
return 0;
case 2:
return 1;
case 3:
return 0;
case 4:
return -1;
default:
break;
}
}
セルは、yのxは、単一の式でアクセスする必要がありますと方向(N、E、S、W、 0-3)
周囲のスペース(x-1、y-1からx + 1、y + 1)を定義するなど、すべてのネイバーを持つことは望ましくありません。これはちょうど繰り返すだけで、正方形を投げたので、親切なものになるでしょう。私はちょうど単一の細胞が欲しい。
これは音のようなものですが、シンプルですが、短く、速く、合法的な解決策を見つけることに頭が痛いです。優先言語はC++
私はあなたの解決策に興奮しています!
EDIT
私は今、問題を考え出しました。
はこれを見てみましょう: Graph悲しいイムまだ画像を投稿することができますが、あなたが方向を表す定数を持つグラフの交点を見ることができるようにxと座標に追加する必要が正確に何ではありません
x1 = x + cos((2*pi*(dir-1))/4)
y1 = y + cos((2*pi*(dir-2))/4)
dir
は0から3にある間:あなたは私たちがY取得するための単純な正弦波を使用することができ、これから式があることを、これは意味
の上に見ることができます
私の解決策は、接続された隣人を計算する純粋な数学的方法を見つけることです。もちろん、これは何らかの形で改善される可能性がありますか?
あなたのソリューションをありがとう!この問題の解決策を楽しみにしています!
乾杯!
はSOへようこそ!現在のソリューションの問題点と、「適切な」ソリューションと考えるべき点について説明してください。 –
トピックを外しています: "x、y、方向(N、E、S、W、0-3など)を持つ単一の式でセルにアクセスできるようにする必要があります"素敵で読みやすい名前。 – user4581301