JSFiddle - React, Tailwind, and code Playground
HTML
<!DOCTYPE html5>
<html lang="en-US">
<head>
<title>Physics Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body style="text-align:center;">
<h1>Physics Test</h1>
<p><canvas id="screen" width="800" height="500" style="background: #000000" role="img">
Your browser does not support the canvas element.
</canvas></p>
<script type="text/javascript">
var ctx = document.getElementById("screen").getContext("2d");
var keys = new Array();
$(document).keydown(function(event){
var key = event.keyCode;
switch(key){
case 32: // SPACE button
event.preventDefault(); // stop default action
break;
case 27: // ESCAPE button
event.preventDefault(); // stop default action
break;
case 9: // TAB button
event.preventDefault(); // stop default action
break;
default:
break;
}
keys[key] = true;
});
$(document).keyup(function(event){
var key = event.keyCode;
keys[key] = false;
});
// mouse x, y; event listener for mouse movement
var mouseX = 0;
var mouseY = 0;
$("#screen").mousemove(function(e){
mouseX = e.pageX - $("#screen").offset().left;
mouseY = e.pageY - $("#screen").offset().top;
});
// rectangle x, y
var x = 400;
var y = 250;
var FPS = 60;
// physics variables
var velX = 0;
var velY = 0;
var drag = 0.92;
var force = 0.35;
var angle = 0;
// speed statistics data
var elapsed = 0;
var measuring = true;
function update(){
drag = 1 - (60/FPS)*0.08;
force = (60/FPS)*0.35;
// calculate angle between mouse and rectangle
var dx = mouseX - x;
var dy = mouseY - y;
var angle = Math.atan(dy/dx);
if(dx < 0)
angle += Math.PI;
else if(dy < 0)
angle += 2*Math.PI;
// calculate the force (on or off, depending on user input)
var curForce;
if(keys[32])...