Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Движение по прямой под действием силы тяжести (https://javascript.ru/forum/misc/38191-dvizhenie-po-pryamojj-pod-dejjstviem-sily-tyazhesti.html)

lammeR 23.05.2013 05:32

Движение по прямой под действием силы тяжести
 
Привет всем. Помогите реализовать движение объекта с учётом силы тяжести. Необходимо, чтобы объект двигался вниз с ускорением, а вверх - с замедлением. Не могу сделать. Как применить формулу F=mg ? Вот наработки:
<script type="text/javascript">
window.onload = function() {
		
		var canv = document.getElementById("canv");
		var ctx = canv.getContext("2d");
		
		var interval = null;
		
		var x = 50, y = 50, vx = 1, vy = 1,
            angle = 0, g = 9.8, a = 10, m = 5; /*vx, vy - скорость для х и у координат, m - масса, g - ускорение свободного падения, а - ускорение*/
		
		function line(x0, y0, x1, y1) {
				ctx.beginPath();
				ctx.moveTo(x0, y0);
				ctx.lineTo(x1, y1);
				ctx.strokeStyle = "blue";
				ctx.stroke();
		}
		
		function circ(x, y){
				ctx.beginPath();
				ctx.fillStyle = "red";
				ctx.arc(x, y, 6, 0, Math.PI * 2, true);
				ctx.fill();
		}
		
		function update() {
				ctx.clearRect(0, 0, 600, 400);
				//едим вниз
				if(x < 300 && y < 300) {
						angle = Math.atan2(300 - 50, 300 - 50);
				}
				//едим вверх
				else{
						angle = Math.atan2(80 - 300, 600 - 300);
				}
				
				//приращаем координаты х, у в зависимости от угла между точками прямой
				x += Math.cos(angle) * vx;
				y += Math.sin(angle) * vy;
				
				//доехали до верхней точки
				if(x >= 600 && y <= 80) {
						clearInterval(interval);
				}
				
				line(50, 50, 300, 300);
				line(300, 300, 600, 80);
				circ(x, y);
		}
		
		function anim() {
				interval = setInterval(function() {
						update();
				}, 16);
		}
		
		anim();
}

</script>
<canvas id="canv" width="800" height="600"></canvas>

Пока объект движется равномерно, так как не знаю как применить физику.

ksa 23.05.2013 09:06

Цитата:

Сообщение от lammeR
Как применить формулу F=mg ?

Там еще и угол наклона нужен...


ksa 23.05.2013 09:14

Цитата:

Сообщение от lammeR
Необходимо, чтобы объект двигался вниз с ускорением, а вверх - с замедлением. Не могу сделать.

Читаем...
Цитата:

Можно определить ускорение свободного падения, используя силу тяжести. Измерив весами массу тела в кг, соблюдая предельную точность, подвесить затем это тело на динамометре. Полученный результат силы тяжести будет в ньютонах. Разделив значение силы тяжести на массу тела, которое только что подвешивалось на динамометр, получится ускорение свободного падения.
Но тебе нужна проекция силы тяжести. Т.к. у тебя горка...


Часовой пояс GMT +3, время: 21:24.