## DEV Community

Gerardo Cárdenas

Posted on • Updated on

# Make Physics Easy

## What I built

I built a web page with many text fields, to solve problems of physics.
For instance problems of the topic: Uniformly Accelerated Motion.
The user only specifies the value of 3 of the variables: InitialSpeed, FinalSpeed, Acceleration, Time, or Distance. ANY 3 VARIABLES of this set of 5 variables.
Then the user hit the button calculate. And the other 2 textfields empty, will be populated with the right value.
Now if the user want to see how these values were computed. The user should use a browser that supports Web Monetization.
The objective is to have a big web site that solves any problem of physics, the user only has to specify the known values and press or hit the button. It will be great to win this hackathon to get motivation to program more fields to solve more problems of physics.

### Submission Category:

Exciting Experiments

## Demo

http://tutarea.260mb.com/?i=2

## How I built it

I used a Notepad to text the html tags for the web page, and the .js file.

Here is the javascript code THAT INCLUDES MONETIZATION:
var Vo,Vf,A,D,T;
//Las sigs. vars auxiliares indican si ya se obtuvo o no la variable
//Si valen 0 indican que no se ha obtenido o que son incógnitas

function captura(){

//Al inicio se supone que no se conocen las variables: Vo,Vf,A,D,T;
conocidaVo=0;   Vo="?";
conocidaVf=0;   Vf="?";
conocidaA =0;   A ="?";
conocidaD =0;   D ="?";
conocidaT =0;   T ="?";
//Si la variable Vo no es incógnita
if(document.Datos.Vo.value!=""){
Vo= document.Datos.Vo.value;
conocidaVo=1;
}
if(document.Datos.Vf.value!=""){
Vf= document.Datos.Vf.value;
conocidaVf=1;
}
if(document.Datos.A.value!=""){
A= document.Datos.A.value;
conocidaA=1;
}
if(document.Datos.D.value!=""){
D= document.Datos.D.value;
}
if(document.Datos.T.value!=""){
T= document.Datos.T.value;
conocidaT=1;
}

}

function resuelve(){
captura();
doc.document.write('

doc.document.write('PROBLEMA: Vo='+Vo);
doc.document.write(' Vf='+Vf);
doc.document.write(' a='+A);
doc.document.write(' d='+D);
doc.document.write(' t='+T+'
');
doc.document.write('SOLUCIÓN:
');
//Mientras Vo sea incógnita o mientras Vf sea incógnita o ...
//mientras T sea incógnita hacer:
if (document.monetization) {

while( (conocidaVo==0) ||
(conocidaVf==0) ||
(conocidaA ==0) ||
(conocidaT ==0) ){
//Calcular Vo//////////////////////////////////////////////////////////////////////////
doc.document.write('De la Ec. 4 obtenemos: Vo=2d/t - Vf
');
Vo=2*D/T - Vf;
doc.document.write('Sustituyendo: Vo=2('+D+'/'+T+') - '+Vf+'='+Vo+'
');
conocidaVo=1;
}
if( (conocidaVo==0)&&(conocidaVf==1)&&(conocidaA==1)&&(conocidaT==1) ){
doc.document.write('De la Ec. 1 obtenemos: Vo=Vf - at
');
Vo=Vf-A*T;
doc.document.write('Sustituyendo: Vo='+Vf+' - '+A+'('+T+')='+Vo+'
');
conocidaVo=1;
}
doc.document.write('De la Ec. 2 obtenemos: Vo=(d - at2/2)(1/t)=d/t - at/2
');
Vo=D/T - A*T/2;
doc.document.write('Sustituyendo: Vo='+D+'/'+T+' - '+A+'('+T+'/2)='+Vo+'
');
conocidaVo=1;
}
Vo=Vf*Vf - 2*A*D;
Vo=Math.sqrt(Vo);
if(Vo>=0)
{
doc.document.write('De la Ec. 3 obtenemos: Vo=(Vf2 - 2ad)1/2
');
doc.document.write('Sustituyendo: Vo=['+Vf+'2 - 2('+A+')'+D+']1/2='+Vo+'
');
conocidaVo=1;
}
}
//Calcular Vf//////////////////////////////////////////////////////////////////////////
if( (conocidaVo==1)&&(conocidaVf==0)&&(conocidaA==1)&&(conocidaT==1) ){
doc.document.write('De la Ec. 1 obtenemos: Vf=Vo + at
');
Vf=Vo + A*T;
doc.document.write('Sustituyendo: Vf='+Vo+' + ('+A+')'+T+'='+Vf+'
');
conocidaVf=1;
}
Vf=Vo*Vo + 2*A*D;
Vf=Math.sqrt(Vf);
doc.document.write('De la Ec. 3 obtenemos: Vf=[Vo2 + 2ad]1/2
');
doc.document.write('Sustituyendo: Vf=['+Vo+'2 + 2('+A+')'+D+']1/2='+Vf+'
');
conocidaVf=1;
}
doc.document.write('De la Ec. 4 obtenemos: Vf=2d/t - Vo
');
Vf=2*D/T - Vo;
doc.document.write('Sustituyendo: Vf=2('+D+')/'+T+' - '+Vo+'='+Vf+'
');
conocidaVf=1;
}
//Calcular A //////////////////////////////////////////////////////////////////////////
if( (conocidaVo==1)&&(conocidaVf==1)&&(conocidaA==0)&&(conocidaT==1) ){
doc.document.write('De la Ec. 1 obtenemos: a=(Vf - Vo)/t
');
A=(Vf - Vo)/T;
doc.document.write('Sustituyendo: a=('+Vf+' - '+Vo+')/'+T+'='+A+'
');
conocidaA=1;
}
doc.document.write('De la Ec. 2 obtenemos: a=[d - Vo t][2/t2]
');
A=2*(D - Vo*t)/(T*T);
doc.document.write('Sustituyendo: a=['+D+' - ('+Vo+')'+T+'][2/'+T+'2]='+A+'
');
conocidaA=1;
}
doc.document.write('De la Ec. 3 obtenemos: a=[Vf2 - Vo2]/[2d]
');
A=(Vf*Vf - Vo*Vo)/(2*D);
doc.document.write('Sustituyendo: a=['+Vf+'2 - '+Vo+'2]/[2('+D+')]='+A+'
');
conocidaA=1;
}
//Calcular D //////////////////////////////////////////////////////////////////////////
doc.document.write('De la Ec. 2 obtenemos: d=Vot + at2/2
');
D=Vo*T + A*T*T*(0.5);
doc.document.write('Sustituyendo: d='+Vo+'('+T+') + ('+A+')'+T+'2/2='+D+'
');
}
doc.document.write('De la Ec. 3 obtenemos: d=[Vf2 - Vo2]/[2a]
');
D=(Vf*Vf - Vo*Vo)/(2*A);
doc.document.write('Sustituyendo: d=['+Vf+'2 - '+Vo+'2]/[2('+A+')]='+D+'
');
}
doc.document.write('De la Ec. 4 obtenemos: d=(t/2)[Vf + Vo]
');
D=(T/2)(Vf + Vo);
doc.document.write('Sustituyendo: d=('+T+'/2)['+Vf+' + '+Vo+']='+D+'
');
}
//Calcular T //////////////////////////////////////////////////////////////////////////
if( (conocidaVo==1)&&(conocidaVf==1)&&(conocidaA==1)&&(conocidaT==0) ){
doc.document.write('De la Ec. 1 obtenemos: t=(Vf - Vo)/a
');
T=(Vf - Vo)/A;
doc.document.write('Sustituyendo: t=('+Vf+' - '+Vo+')/'+A+'='+T+'
');
conocidaT=1;
}
doc.document.write('De la Ec. 4 obtenemos: t=(2d)/[Vf + Vo]
');
T=(2*D)/(Vf + Vo);
doc.document.write('Sustituyendo: t=2('+D+')/['+Vf+' + '+Vo+']='+T+'
');
conocidaT=1;
}
}//del while
}//if (document.monetization) {
else {
while( (conocidaVo==0) ||
(conocidaVf==0) ||
(conocidaA ==0) ||
(conocidaT ==0) ){
//Calcular Vo//////////////////////////////////////////////////////////////////////////
Vo=2*D/T - Vf;
conocidaVo=1;
}
if( (conocidaVo==0)&&(conocidaVf==1)&&(conocidaA==1)&&(conocidaT==1) ){
Vo=Vf-A*T;
conocidaVo=1;
}
Vo=D/T - A*T/2;
conocidaVo=1;
}
Vo=Vf*Vf - 2*A*D;
Vo=Math.sqrt(Vo);
if(Vo>=0)
{
conocidaVo=1;
}
}
//Calcular Vf//////////////////////////////////////////////////////////////////////////
if( (conocidaVo==1)&&(conocidaVf==0)&&(conocidaA==1)&&(conocidaT==1) ){
Vf=Vo + A*T;
conocidaVf=1;
}
Vf=Vo*Vo + 2*A*D;
Vf=Math.sqrt(Vf);
conocidaVf=1;
}
Vf=2*D/T - Vo;
conocidaVf=1;
}
//Calcular A //////////////////////////////////////////////////////////////////////////
if( (conocidaVo==1)&&(conocidaVf==1)&&(conocidaA==0)&&(conocidaT==1) ){
A=(Vf - Vo)/T;
conocidaA=1;
}
A=2
(D - Vo*t)/(T*T);
conocidaA=1;
}
A=(Vf*Vf - Vo*Vo)/(2*D);
conocidaA=1;
}
//Calcular D //////////////////////////////////////////////////////////////////////////
D=Vo*T + A*T*T*(0.5);
}
D=(Vf*Vf - Vo*Vo)/(2*A);
}
D=(T/2)*(Vf + Vo);
}
//Calcular T //////////////////////////////////////////////////////////////////////////
if( (conocidaVo==1)&&(conocidaVf==1)&&(conocidaA==1)&&(conocidaT==0) ){
T=(Vf - Vo)/A;
conocidaT=1;
}
T=(2*D)/(Vf + Vo);
conocidaT=1;
}
}//del while
doc.document.write('T='+T+'
');
doc.document.write('D='+D+'
');
doc.document.write('A='+A+'
');
doc.document.write('Vf='+Vf+'
');
doc.document.write('Vo='+Vo+'
');
doc.document.write('IF YOU WANT TO SEE HOW IT WAS CALCULATED... PLEASE USE A BROWSER THAT SUPPORTS WEB MONETIZATION.');

}//else from if document.monetization
doc.document.write('');
doc.document.close();
}

## Top comments (2)

Gerardo Cárdenas

I don´t know why some part of the code has a black background.

Robert • Edited

Use three backticks then the programming language (i.e. javascript).

Here's a sample

console.log('Hello world');