
/* energy.
Conservation of Energy Formula for Roller Coaster Problems
Alan Bundy 8.4.81 */

/* Preference rating of formula */
preference(consvenergy,3) :- probtype(roller_coaster).

/* What quantities does formula relate? */
relates(consvenergy,[length,vel]).

/* Prepare situation of formula */
/*-------------------------------*/

/* when V is initial velocity */
prepare(consvenergy,V,vel,relvel(Obj1,Obj2,V,Dir,Initial),
				situation(Obj,Start,Finish,Initial,Final)) :-
	ncc moment(Initial),
	ncc initial(Period,Initial),
	cc final(Period,Final),
	perm2(Obj1,Obj2,Obj,earth),
	dc cued(motion(Obj,Path,Start,Side,Period)),
	dc at(Obj,Finish,Final),
	ncc free(Path,Obj,Period).


/* when V is final velocity */
prepare(consvenergy,V,vel,relvel(Obj1,Obj2,V,Dir,Final),
				situation(Obj,Start,Finish,Initial,Final)) :-
	ncc moment(Final),
	ncc final(Period,Final),
	cc initial(Period,Initial),
	perm2(Obj1,Obj2,Obj,earth),
	dc cued(motion(Obj,Path,Start,Side,Period)),
	dc at(Obj,Finish,Final),
	ncc free(Path,Obj,Period).


/* when V is typical velocity */
prepare(consvenergy,V,vel,relvel(Obj1,Obj2,V,Dir,Period),
				situation(Obj,Start,TypPt,Initial,Period)) :-
	ncc period(Period),
	cc initial(Period,Initial),
	perm2(Obj1,Obj2,Obj,earth),
	dc cued(motion(Obj,Path,Start,Side,Period)),
	cc typical_point(Path,TypPt),
	ncc free(Path,Obj,Period).


/*  The Formula */

isform(consvenergy,situation(Obj,Start,Finish,Initial,Final),
					g*H=((V^2)/2)-((U^2)/2))
	:- ncc drop(Start,Finish,H),
	   cc vel(Obj,V,Dir1,Final),
	   cc vel(Obj,U,Dir2,Initial).


