현재 2D 입자 시뮬레이터를 연구 중입니다. 각 입자는 독특한 각도로 움직입니다. x와 y 속도를 변경하는 기본 공식을 찾았지만 현재 각도에 따라 움직이는 속도가 설정되어 있습니다.2D 수직 각도 충돌
particles[a][3] += particles[a][1] * cos(radians(particles[a][5]));//move X
particles[a][4] += particles[a][1] * sin(radians(particles[a][5]));//move Y
벽에 충돌에 대한 기본 충돌이 있지만 충돌을 정렬하는 가장 좋은 방법을 찾을 수 없습니다. 현재 회전을 -1로 곱하면되지만 위쪽과 아래쪽에서만 작동합니다. 참고 : 파티클은 충돌을 실행 한 후에 항상 움직입니다 (충돌 상자에 갇히지 않고 빠져 나오지 않음).
if(particles[a][3] < 0 || particles[a][3] > windowWidth/2 || particles[a][4] < 0 || particles[a][4] > windowHeight/2) {
/*windowWidth and windowHeight are divided by 2 to find the canvas size. In the setup() I have the canvas set to that value).*/
particles[a][5] *= -1;
}
배열 값 :
particles[a][1] = speed
particles[a][3] = x position
particles[a][4] = y position
particles[a][5] = rotation
내 질문이 충돌 테스트를 실행하는 가장 좋은 방법입니다 것입니다. 나는 충돌이 90도에서 튀어 오른다는 것을 이해하지만 지루한 묶음 대신 가능한 한 적은 수의 if 문을 사용하는 것이 좋습니다 (더 간단할수록 좋음).
메리 크리스마스, 미리 감사드립니다!
알아 냈어! 최종 코드 :
if(particles[a][4] < 0 || particles[a][4] > windowHeight/2) {
particles[a][5] *= -1;
} else if(particles[a][3] < 0 || particles[a][3] > windowWidth/2) {
particles[a][5] = 180 - particles[a][5];
}
대체로 완전히 열립니다. 인스턴스에 대한 권장 학습 가이드가있는 링크를 나에게 보낼 수 있습니까? javascript를 확인하면 이제 각도를 반영합니다. – bdkopen
y 축을 정확하게 반사 시키십시오. 인스턴스에 대해 배우는 데 여전히 관심이 있습니다. – bdkopen