2012-05-09 7 views

답변

1

모든 dimentions 그리드 큐브에 대한 동일한 길이를 가정하면, (i를 gxgy, gz 그리드 큐브입니다

gx = x - x%l; 
gy = y - y%l; 
gz = z - z%l; 

가 ORIGO에 가장 가까운 좌표를 계산하여 ORIGO을 OHE에 가장 가까운 좌표를 얻을 수 있습니다 여기서 x, y, z> = 0으로 가정), %은 모듈러스 연산자이고 l은 격자 큐브의 길이입니다.

참고 :

(gx, gy, gz) 
(gx+l, gy, gz) 
(gx, gy+l, gz) 
(gx, gy, gz+l) 
(gx+l, gy+l, gz) 
(gx+l, gy, gz+l) 
(gx, gy+l, gz+l) 
(gx+l, gy+l, gz+l) 
0
: gx = static_cast<int>(x)/l*l;

그런 다음에 속하는 (x, y, z) 그리드 큐브의 8 개 코너는 (static_cast<>이 정수가 아닌 x를 고려하여) : 당신은 계산뿐만 아니라이 방법을 수행 할 수 있습니다

그리드의 원점이 (0,0,0)이라고 가정하면 (x,y,z)을 그리드 크기로 나눠야합니다. 는 그런 다음 그 결과를 반올림 그리드의 크기를 곱해야한다, 즉 : n<=x은 (실제로, 당신은 단지 부동 소수점의 결과를 캐스팅해야 있도록 [x]가 가장 큰 정수 n입니다

(nx, ny, nz) = [(x,y,z)/grid_size] * grid_size 

조작을 int으로). 검색중인 포인트는 다음과 같습니다.

(nx, ny, nz) 
(nx+grid_size, ny, nz) 
(nx, ny+grid_size, nz) 
(nx, ny, nz+grid_size) 
(nx+grid_size, ny+grid_size, nz) 
(nx+grid_size, ny, nz+grid_size) 
(nx, ny+grid_size, nz+grid_size) 
(nx+grid_size, ny+grid_size, nz+grid_size)