문제

내가하려는 것은 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 축에 어떤 단위가 정확히 어떤 단위인지 (유효한 가정이 될 수도 있고 아닐 수도 있음)에 대해 신경 쓰지 않는다고 가정했습니다.

Quickbasic을 볼 수 있습니다 소스 코드 ""고릴라"게임은 MS-DOS 5에 처음으로 포함되어 있습니다. 그것은 당신이 묘사하는 방식으로 던진 바나나의 움직임을 애니메이션하는 데 중력을 고려했습니다.

내가 아는 한, 수학의 일부는 기본 언어의 일부가 그 이후로 변하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top