2016-04-22 9 views
-2

"光源"が座標上に配置された2D配列があります。この光源には、輝度値が付いています。私は、この光がその周囲のタイルをその明るさと等しい距離に照らし、照明されたタイルの明るさのそれぞれが光源からの距離に等しいように、どのようにしてこのような光を作り出すのだろうと思っていました。たとえば、明るさ5の球は半径5のセルで照明され、2ステップ離れたセルは2の輝度で4となり、5ステップ離れて1で表示されます。中心点から連続して減少する数値で2D配列を塗りつぶす方法

+2

「宿題」助けを求める[質問で問題を解決するために、これまでに行われた作業の概要、および難易度それを解決するための記述を含まなければならないので、私は、オフトピックとして、この質問を閉じるために投票しています](http://stackoverflow.com/help/on-topic)。 – Andreas

答えて

0

2次元配列にどのように値を設定しますか?

final int SIZE = 30; // size of array 
int[][] brightnessOfTiles = new int[SIZE][SIZE]; 

brightnessOfTiles[x][y] = 1234; // some value 

どのように特定の場所で光の値を決定しますか?

int centerX = 15; // x coordinate of position of light source 
int centerY = 10; // y coordinate of position of light source 
float dropoffFactor = 1; // how fast the brightness fades 
brightnessOfTiles[x][y] = MAX_BRIGHTNESS/(1 + dropoffFactor * getDistanceSquaredBetweenPoints(x, y, centerX, centerY)); 

2点間の距離はどのようにして決められますか?

private int getDistanceSquaredBetweenPoints(x, y, centerX, centerY){ 

    // formula is: distance = sqrt((x - cx)^2 + (y - cy)^2) 
    // so, distance^2 = (x - cx)^2 + (y - cy)^2 

    return Math.pow(centerX - x, 2) + Math.pow(centerY - y, 2); 
} 

2D配列に対してどのように反復処理しますか?

for(int x = 0; x < SIZE; x++){ 
    for(int y = 0; y < SIZE; y++){ 

     brightnessOfTiles[x][y] = ...; // see above 
    } 
} 
+0

申し訳ありませんが、私が試した以前の事柄に特化していません。これは途中で宿題ではなく、単なる個人的なプロジェクトです。私は年齢のMatlabで作業した後、Javaにもっと精通しています。あなたが私を助けたポイントの2つの間の距離について、より良い質問があったと思います。とてもありがとうございます。 – David

+0

これで問題が解決した場合は、その答えをupvoteしてください。 – GreenGiant

+0

私は十分に高い評判を持っていないので、私は恐れている。私がするとき、私は戻ってきて、そうするでしょう。 – David

関連する問題