현재 포인트 그리드를 생성하는 알고리즘이 있습니다. x (lx
) 길이와 y (ly
) 길이의 형식으로 사용자로부터 입력을받으며 점을 간격을 두어 증가 또는 증가하는 값은 (dx
및 dy
)입니다. 나는 에 점이 필요하고 lx
및 ly
에 의해 정의 된 경계 사각형의 가장자리 인을 항상 시작하고 끝내야합니다. 나는 몇 가지 방법을 시도했다 :균일 한 간격의 포인트 그리드 생성
int numintervalx = round(lx/dx), numintervaly = round(ly/dy);
:
double startx = lx/-2.0, starty = ly/-2.0;
내 첫 번째 방법은 점과 라운드의 수를 결정
경계 사각형의 시작 가장자리는 다음과 같이 정의된다
두 번째 방법은 점의 수를 결정하고 점의 수보다 큰 가장 가까운 정수를 사용합니다.
int numintervalx = ceil(lx/dx), numintervaly = ceil(ly/dy);
내 세 번째 방법은 포인트의 수를 결정하고, 점들의 수보다 가까운 정수 덜 사용 델타가 다시 계산된다
int numintervalx = floor(lx/dx), numintervaly = floor(ly/dy);
는 바운딩 박스에 맞게 :
dx = lx/double(numintervalx);
dy = ly/double(numintervaly);
이 그 다음 포인트 스스로 생성하는 for
루프에 공급하는 경우 :
for (int i = 0; i <= numintervaly; i++)
for (int j = 0; j <= numintervalx; j++)
{
double point[3] = {startx + dx * j, starty + dy * i, 0};
}
가까이 사용자 지정 그리드의 실제 격자를 만들 것 또 다른, 더 정확한 방법은 거기를 그 여전히 항상 가장자리에서 시작하고 끝나는가?
이름 지정에 대한 좋은 지적. 또한 사용자가 최적이 아닌 생성 값을 사용하기로 결정하면 오류를 받아 들여야한다는 점을 분명히했습니다. – Drise