VB의 발사체 운동
-
19-09-2019 - |
문제
내가하려는 것은 Visual Studio를 사용하여 Visual Basic의 발사체 모션을 시뮬레이션하는 것입니다. 본질적으로, 같은 것 이것 그러나 공기 저항이나 질량없이.
어쨌든, 내가하고있는 방식은 그림 상자를 사용하고 x와 y 속성이 공식에 의해 계산 된 변수 인 간격 1의 타이머를 사용하여 매번 (원, 원)에 이미지를 그리는 것입니다.
예제의 것과 같은 움직임을 얻을 수 있도록 x와 y에 할당하는 데 사용할 수있는 공식을 알고 싶습니다. 나는 Wikipedia 및 기타 사이트의 도움으로 많은 물건을 시도했지만 그것을 뽑을 수없는 것 같습니다. 감사!
해결책
v의 발사 속도, 라디안의 발사 각도, 중력 G, 시간 t :
x = v * cos (a) * t + g * t * t / 2
y = v * sin (a) * t -g * t * t / 2
배경 정보 여기에.
다른 팁
귀중한 시계 사이클을 최소화하기위한 가장 단순한 예는 다음과 같습니다.
// Initialization
x = 0; // x position
y = 0; // y position
xi = 0.1; // x incremental value (velocity)
yi = 0.1; // y incremental value (velocity)
// Rendering loop
x += xi;
y += yi;
yi -= 0.01; // decrement by arbitrary value to simulate gravity
아이디어는 증분 변수 XI와 Yi를 사용하고 모든 힘을 수행하는 것입니다. 원하는 효과를 얻기 위해 숫자를 조정할 수 있습니다. 한 걸음 더 나아가려면 승수를 사용하여 모든 반복에서 증분 변수를 조정하여 마찰 또는 공기 저항을 쉽게 적용 할 수 있습니다.
이것은 입자 엔진 등에서 여러 번 사용한 기본 방법입니다. 트리그 기능을 호출하지 않기 때문에 매우 빠른 이점이 있으며 큰 입자 엔진으로 잘 조정됩니다.
업데이트:
지구의 중력에 대한 공식의 숫자를 사용 하여이 방법의 예가 있습니다.http://www.forums.evilmana.com/game-programming-theory/euler-vs-verlet-vs-rk4-physics/?wap2
-9.8 값과 타임 스텝 변수를 사용하더라도 여전히 간단한 코드입니다. 내 코드는 절대적으로 가장 간단하게 최적화되어 있습니다.
x = 발사 이후 총 시간을 설정하십시오
y = -0.5 * a * x * x + v * x + 초기 높이
a = 원하는 가속도. 지구의 가속도 (예 : 중력)는 ca입니다. 9.8 미터/초 제곱.
v = UP 방향의 초기 속도
예제에서는 EartomHeight가 0이지만 원한다면 더 높이 시작할 수 있습니다.
편집하다:
다른 게시물이 상태입니다
x = v * cos (a) * t + g * t * t / 2
y = v * sin (a) * t -g * t * t / 2
이것은 본질적으로 동일한 공식이지만 옵션 + 초기 보정 매개 변수를 남깁니다.
나의 진술 "상승 방향의 속도"는 그의 공식에서 v (총 속도) * sin (a)과 동일합니다.
단순성을 위해 x를 t (시간) t로 동일시했지만 x = v * cos (a)를 사용하면 시간을 물리적 거리에 매핑 할 수 있습니다. 내 단순화에서, 나는 당신이 x 축에 어떤 단위가 정확히 어떤 단위인지 (유효한 가정이 될 수도 있고 아닐 수도 있음)에 대해 신경 쓰지 않는다고 가정했습니다.