쉬발 ... 있을리가 없는데;
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시간 동안 삽질중 ㅠ.ㅠ
혹시압니까업채로무니해보세요
아냐 그럴리 없어
codesaf // 기계공학에선 무차원화라고 함
Linq 쿠다사이
codesaf. / c#은 가비지 콜렉터님이 자동으로 해제해주신다던데 ... 해제를 꼬박꼬박 해볼까여?
배열 정렬 코드는 웹에 널렸으니까 그중에 하나 복붙해서 테스트해보세용
가비지 콜렉터 정확히 언제 오는지 모르자나요 쓰레기값 생겼다해서 무조건 오는게 아니자나요
flat_velocity_temp 크기 맞게 만들었나?
Array.Sort 한번 써먹어 볼라고 1차원으로 바꿨는데;; 알려주신데로 트라이 해보겠음다
관노 // 크기에 대한 에러는 없었고 .. N x M 크기의 2D 배열이라면 N*M 크기의 1D 배열이라서 크기 문제는 아닐꺼라고 생각하고 있어영
Sort 도 있는데 Max 가 없겠냐
씹죶/ Array. 하면 인텔리센스엔 안뜨던데 ...
Array 말고 인스턴스에 . 찍고 인텔리센스봐봐
flat_velocity_temp[i + size_width * j] = velocity[i,j]; 이거 flat_velocity_temp[i + size_height * j] = velocity[i,j]; 아니노?
0~1 값 보니 부동소수점인데 max 값이 0에 가까울수 있나 threhold 주고 체크해라
그냥 1d 이런거 다 버리고 한땀 한땀 하니까 또 되네요 -_-; 뭐가 문제였는지;;
ㅇㅇ 나도 코드에서 문제가 생겼다면 내가 뭔가 틀렸을거라고 생각함 ... 뭘 틀렸는진 아직도 오리무중이지만;
그나저나 감히 마솔루야에 의문을 가지다니 처죽일 사교 도당