Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

collisionMesh

볼록 메시 충돌 기하 도형 생성

R2019b 이후

설명

collisionMesh를 사용하여 볼록 메시로 충돌 기하 도형을 생성합니다.

생성

설명

예제

MSH = collisionMesh(Vertices)는 3차원 Vertices의 목록에서 볼록 메시 충돌 기하 도형을 생성합니다. 꼭짓점은 선택한 프레임(충돌 기하 도형 프레임)을 기준으로 지정됩니다. 기본적으로 충돌 기하 도형 프레임은 세계 프레임과 함께 배치됩니다.

속성

모두 확장

메시의 꼭짓점으로, N×3 배열로 지정됩니다. 여기서 N은 꼭짓점의 개수입니다. Vertices의 각 행은 3차원 공간에서 점의 좌표를 나타냅니다. 일부 점은 생성된 볼록 메시 내부에 있을 수 있습니다.

데이터형: double

세계 프레임을 기준으로 하는 충돌 기하 도형의 자세로, 4×4 동차 행렬 또는 se3 객체로 지정됩니다. 충돌 기하 도형을 생성한 후 자세를 변경할 수 있습니다.

참고

자세가 se3 객체로 지정되면 Pose 속성은 자세를 숫자형 4×4 행렬로 저장한다는 점에 유의하십시오.

데이터형: single | double

객체 함수

show충돌 기하 도형 표시
fitCollisionCapsuleFit collision capsule around collision geometry

예제

모두 축소

단위구에서 무작위로 선택한 10개의 점 좌표로 구성된 배열을 생성합니다. 재현이 가능하도록 난수 시드값을 디폴트 값으로 설정합니다.

rng default
n = 10;
pts = zeros(n,3);
for k = 1:n
    ph = 2*pi*rand(1);
    th = pi*rand(1);
    pts(k,:) = [cos(th)*sin(ph) sin(th)*sin(ph) cos(ph)];
end

배열에서 볼록 메시 충돌 기하 도형을 생성합니다. 충돌 기하 도형을 시각화합니다.

m = collisionMesh(pts);
show(m)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type patch.

첫 번째 배열과 유사하지만, 이번에는 단위구에서 무작위로 선택한 1,000개의 점으로 구성된 두 번째 배열을 만듭니다.

n = 1000;
pts2 = zeros(n,3);
for k = 1:n
    ph = 2*pi*rand(1);
    th = pi*rand(1);
    pts2(k,:) = [cos(th)*sin(ph) sin(th)*sin(ph) cos(ph)];
end

배열에서 볼록 메시 충돌 기하 도형을 생성하고 시각화합니다. 구에서 더 많은 점을 선택하면 구에 가까운 모양의 메시가 생성되는 것을 볼 수 있습니다.

m2 = collisionMesh(pts2);
show(m2)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type patch.

정육면체의 8개 코너 좌표로 구성된 배열을 생성합니다. 정육면체는 원점을 중심으로 하며 한 변의 길이는 4입니다.

cubeCorners = [-2 -2 -2 ; -2 2 -2 ; 2 -2 -2 ; 2 2 -2 ;...
    -2 -2 2 ; -2 2 2 ; 2 -2 2 ; 2 2 2]
cubeCorners = 8×3

    -2    -2    -2
    -2     2    -2
     2    -2    -2
     2     2    -2
    -2    -2     2
    -2     2     2
     2    -2     2
     2     2     2

pts2cubeCorners를 추가합니다. 새 배열에서 메시 충돌 기하 도형을 생성하고 시각화합니다. 정육면체가 구를 포함하므로 기하 도형을 생성할 때 정육면체 내부에 있는 구의 점들은 무시됩니다.

pts3 = [pts2;cubeCorners];
m3 = collisionMesh(pts3);
show(m3)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type patch.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2019b에 개발됨

모두 확장