쉬발 ... 있을리가 없는데;


2d 속도장(float[,] velocity)을 1d 배열(float[] flat_velocity_temp) 에 offset 써서 좌표 변환(?)을 해서 다 집어넣었음.


 for(int j=0;j<size_height;j++) {

for(int i=0;i<size_width;i++) {

flat_velocity_temp[i + size_width * j] = velocity[i,j];

}

}


c#에 Sort 를 쓰면 자동으로 작은거부터 큰걸로 정렬해준다길래 그걸 쓰기로 결정함.


Array.Sort(flat_velocity_temp);


잴 마지막에 있는게 잴 큰거니까 최대값 변수(float max)에 집어넣었음


max = flat_velocity_temp[size_width * size_height -1];



그 다음엔 속도장을 무차원화 하기 위해서



 for(int j=0;j<size_height;j++) {

for(int i=0;i<size_width;i++) {

velocity[i,j] /= max;

}

}


이러면 잴 작은 값은 0이 되고, 잴 큰 값은 1이 됨.

이렇게 무차원화 된 놈한테 이제 255를 곱해서 속도가 0이면 검은색(0,0,0) 1이면 하얀색(255,255,255) 가 되도록 픽셀을 정해서

뿌리면 끝나는 프로그램인데 ..


시행횟수를 늘리다보면 몇몇 값에서 255를 초과한 256이나 301 같은 숫자가 나옴;

이건 c#의 Array.Sort 로 정렬한 값이 최대값이 아니란 뜻인데, 마이크로소프트 같은 회사에서 낸 상용프로그램에 저런 버그가 있을거라는 생각은 안듬;


뭘 잘못하고 있는건지 짐작도 안되서 3시간 동안 삽질중 ㅠ.ㅠ