Main Content

collisionMesh

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

R2019b 이후

설명

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

생성

설명

예제

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

MSH = collisionMesh(___,Pose=pose)는 세계 프레임을 기준으로 메시의 Pose 속성을 pose로 설정합니다.

속성

모두 확장

메시의 꼭짓점으로, 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에 개발됨

모두 확장