2017-10-26 10 views
1

입자 이동을 시뮬레이트하기위한 코드를 작성 중입니다. (현재 2D 곧 3D 희망을 가지고) 사실, 만약 내가 비교적 큰 timestep 입자를 사용하면 서로를 통과하게됩니다.서로 통과하는 입자

정말 작은 단계를 사용하지 않고도 문제를 바로 잡을 수있는 제안이 있으십니까? (C++에서는 많은 차이가 있습니다.)

+1

최상의 접근 방식을 확인하려면 코드를 추가하십시오. – sirandy

답변

0

두 개체가 충돌하는지 확인하려면 일종의 collision detection을 수행해야합니다.

데이터 구조에 따라 검색 형식은 다양 할 수 있습니다. 방금 포인트 목록이 있다면 입자에 대한 N^2 단계에서 서로를 모두 확인해야합니다 (더 큰 공간 발을 만들기 위해 이동 벡터를 추가). 이는 GJK 알고리즘으로 수행 할 수 있습니다.

일부 공간 데이터 구조를 사용하면 정리 된 입자 집합에서 GJK를 실행함으로써 복잡성을 줄일 수 있습니다. 즉, 불가능한 부분이 겹칠 수 있는지 확인할 필요가 없습니다.

+0

제안을 주셔서 감사합니다. 구현하고 비용이 비용보다 중요한지 아닌지 확인하십시오 :-) – john

0

use of timestep to advance the clock introduces model artifacts 귀하의 경우에 발생하는 것처럼 모델 유효성을 파괴 할 수 있습니다. 대신 이산 이벤트 스케줄링을 사용하십시오. 이 paper from Winter Simulation Conference 2005은 이산 이벤트 프레임 워크에서 동작을 구현하는 방법을 설명합니다. 모델이 더 정확할뿐만 아니라 훨씬 빨라질 것입니다.

+0

제안을 주셔서 감사합니다. 구현하고 있음을 알고 비용이 비용보다 중요한지 아닌지 확인하십시오. – john