그래서 Triangle-> AABB 충돌 알고리즘이 있으며 AABB가 충돌 한 삼각형을 반환합니다. 나는 삼각형의 3 개의 벡터를 기대하고 있었고 이동의 방향/크기에 따라 편향된 벡터를 결정할 수 있었기 때문에 각도에서 벽을 향해 달리면 충돌 각도에 따라 더 느리게 움직일 수 있었지만 벽. 이렇게하면 충돌이없는 경우에만 움직이는 끈적한 충돌 문제가 제거됩니다. 어떤 제안이나 참고 사항이라도 대단히 감사하겠습니다! 감사.방향/크기 벡터와 충돌 삼각형을 기반으로 방향/크기 벡터를 편향시킬 수 있습니까?
답변
삼각형의 법선을 따라 속도 성분을 제거합니다.
아이디어는 움직임을 삼각형으로 "들어가는"부분과 나머지 부분 (수직 방향으로)으로 표현할 수 있다는 것입니다. 그런 다음 나머지 부분 만 움직이면 더 이상 움직임에 의해 삼각형에 가까이 갈 수 없게됩니다 (또는 그 이상의 경우에는 충돌을 감지해서는 안됩니다). 의사 코드에서
: 이렇게하면 바로 그것을 실행할 때 매우 빠르게 벽을 따라 미끄러 만들 것 같은이 의도적으로, 움직임 벡터의 크기를 보존하지 않는
// v := velocity vector of moving object
// p[3] := points that make up the triangle
triangle_normal = cross(p[2]-p[0], p[1]-p[0])
problematic_v = project(v, onto=triangle_normal)
safe_movement = v - problematic_movement
참고.
자세한 내용과 멋진 사진은 가마 수트라 Pool Hall Lessons: Fast, Accurate Collision Detection Between Circles or Spheres을 참조하십시오. 당신은 구체를 사용하지 않지만 충돌을 일으키지 않기 때문에 본질적으로 완벽한 플라스틱을 만들고 있습니다.
먼저 크기/방향을 벡터로 변환합니다 (훨씬 편리합니다).
그리고 (C++) :
는float towards=dot(velocity,norm); // velocity component into triangle
if(towards<0) // is moving into triangle
velocity-=towards*norm; // remove component
그런 다음 삼각형으로 이동할 수 없습니다. towards<0
은 평소에 따라 바꿔야 할 수도 있습니다. 그것을 밀어내는 스프링 힘을 갖는 것도 좋은 일입니다.
불행히도이 두 가지 해결책 중 어느 것도 나에게 효과가 없었습니다. 나는 계속 추측해야한다. – JeanOTF
- 1. 어떻게하면 MATLAB의 이미지에 삼각형을 그릴 수 있습니까?
- 2. 구속 삼각형 삼각형을 사용하여 다각형 삼각형을 그리기
- 3. 벡터를 기반으로 데이터 프레임에 여러 변수를 추가하십시오.
- 4. 연결하여 벡터와 변수
- 5. 어떻게 벡터를 분할 할 수 있습니까?
- 6. STL 벡터와 함께 STL 할당 자 사용
- 7. 벡터와 행렬을위한 훌륭한 PHP 라이브러리가 있습니까?
- 8. 오목한 Delaunay 삼각 측량에서 어떻게 삼각형을 잘라낼 수 있습니까?
- 9. 이진수를 나타내는 int의 벡터와 소수를 나타내는 int의 벡터를 변환하는 방법은 무엇입니까? C++
- 10. 자바에서 벡터와 점으로 사각형 만들기?
- 11. 내부 삼각형을 도려 내기
- 12. 개체 목록/벡터를 구성원의 필드로 정렬 할 수 있습니까?
- 13. 다각형에 중첩 삼각형을 병합
- 14. 비트 맵에서 삼각형을 감지합니다
- 15. 3d 벡터와 큐브의 교차 위치
- 16. 큐브를 가진 예각 삼각형을 만드십시오
- 17. MATLAB을 사용하여 벡터와 수직 점근선을 사용하여 함수를 만드는 방법
- 18. 화면 공간에서 삼각형을 나타내는 행렬
- 19. Git에서 충돌 마커를 변경할 수 있습니까?
- 20. 충돌 원인을 어떻게 알 수 있습니까?
- 21. 벡터를 멤버로 포함하는 구조체의 벡터를 어떻게 초기화합니까?
- 22. AS3 벡터를 타입 참조로 선언 할 수 있습니까? 대신이의
- 23. R의 함수가 두 벡터를 반환 할 수 있습니까?
- 24. C++의 맵 구조에서 벡터를 인덱스로 사용할 수 있습니까?
- 25. 벡터를 vararg에 전달할 수 있습니까? : sprintf에 대한 벡터
- 26. 벡터를 생성하는 대신 어레이 슬라이싱을 사용할 수 있습니까?
- 27. 컴파일러는 깊이 중첩 된 벡터와 경고 3 인 이상
- 28. 원 사각형과 삼각형을 구별하는 기술?
- 29. 벡터와 같은 데이터 유형이지만 정렬 됨
- 30. System Verilog에서 압축을 푼 벡터를 사용해야하는 이유는 무엇입니까?
흠, 내가 너를 따라갈 지 모르겠다. 삼각형 벡터를 정규화하고 방향/크기를 빼면 아무 것도하지 않는 것처럼 보입니다. 좀 좀 더 정교하게 만들어 주시겠습니까? – JeanOTF
크기와 방향의 삼각형과 벡터는 모두 3 차원입니다. – JeanOTF
"정상"과 "정규화"가 실제로는 관련이없는 단어 인 것은 아닙니다. 나는 갱신 할 것이다. – me22