2017-02-09 4 views
-1

내가 가지고있는 OpenGL 메쉬를 가지고 방안에서 임의의 위치를 ​​지정하려고합니다. 현재 코드 줄은 다음과 같습니다.메쉬에 임의의 위치를 ​​생성하는 방법은 무엇입니까?

positions[i] = glm::vec3(rand() % 10 - 1, rand() % 10 - 1, rand() % 10 - 1); 

임의의 위치 (x, y 및 z)가 생성됩니다. 그러나 나는이 코드 스 니펫이 온라인에서 사용 된 이후로 '% 10 - 1'이 무엇을하는지 완전히 모릅니다. 장면에서 숫자와 메쉬의 움직임을 바꿀 수는 있지만 숫자가 어떻게 영향을 미치는지는 모르겠습니다.

메쉬가 너무 가깝지 않고 모두 실내에 들어갈 수 있도록 행을 편집하려면 어떻게해야합니까? (방의 크기/위치를 알지 못하기 때문에 설명이 도움이 될 것입니다).

+0

메쉬의 임의의 위치가 다른 임의의 숫자와 다른 위치에 있지 않습니다. 당신은 그것에 관한 수많은 질문/답변을 발견 할 것입니다. ''을 찾으십시오.'rand()'가 최고의 rng가 아닙니다. – user463035818

답변

2

이 부분은 rand() % 10 - 1 : rand()는 난수 생성 프로그램입니다. %는 모듈로 연산입니다. 따라서 기본적으로 rand() % 10은 [0,9] 범위의 모든 숫자를 생성합니다. 이제 rand() % 10-1은 범위를 [-1,8]로 변경합니다.

메쉬가 너무 가깝지 않고 모두 실내에 들어갈 수 있도록 행을 편집하려면 어떻게해야합니까? (내가 방의 크기/위치를 알지 못하기 때문에 설명이 도움이 될 것입니다).

크기를 최대 값 10으로 변경하기 만하면됩니다.

+0

완벽하고, 설명이 필요합니다. 감사합니다. 메쉬가 서로 너무 가깝게 위치하지 않도록하는 좋은 방법이 있습니까? 내 메쉬에는 물리학 충돌 상자가 있으므로 겹치지 않게하고 싶습니다. –

+0

HashMap 등을 사용하여 좌표를 저장할 수 있습니다. 그래서 당신이 이미 보았던 동일한 좌표를 가질 때마다 새로운 좌표를 얻을 때까지 다시 값을 생성하십시오. 랜덤 넘버 생성기이므로 메쉬에 위치가 지정되지 않도록 할 수 없습니다. – vk3105