/* INF2 : Other inference rules 

						Updated: 5 February 81
*/


			% The mass of a 0D fibre is the mass
			% per length of its supporting body 
			% times its infinitesimal thickness.

mass(Fibre, d(X)*Mu)
    <-- { cont_meas1(Obj,X,Axis,Fibre,A,B) } &
	body1d(Obj) &
	mass_per_length(Obj,Mu).


			% The mass per length of a 1D fibre is the
			% mass per area of its supporting body
			% times its infinitesimal thickness.

mass_per_length(Fibre,d(X)*Mu)
    <--	{ cont_meas1(Obj,X,Axis,Fibre,A,B) } &
	body2d(Obj) &
	mass_per_area(Obj,Mu).


			% The mass per area of a 2D fibre is the
			% mass per volume of its supporting body
			% times its infinitesimal thickness.

mass_per_area(Fibre, d(X)*Mu)
    <-- { cont_meas1(Ob,X,Axis,Fibre,A,B) } &
	body3d(Obj) &
	mass_per_vol(Obj,Mu).

% The above three rules should be united into one.


			% Radius of gyration of a point.

rad_of_gyr(Pt,Axis,K)
    <-- point(Pt) & perp_dist(Pt,Axis,K,Dir).


			% Perpendicular distance of x point to y axis.

perp_dist(Pt,axis(y),R,[180,0])
    <-- separation(origin,Pt,R,[0,0]).
			% rather special purpose!

			% Perpendicular distance of xy point to z axis.

perp_dist(Pt,axis(z),R,[180+T,0])
    <-- separation(origin,Pt,R,[T,0]).
			% rather special purpose!

			% Perpendicular distance of xy point to rr axis.

perp_dist(Pt,axis(rr),R*sin(Alpha-T),[90+Alpha,0])
    <-- separation(origin,Pt,R,[T,0]) &
	tangent(axis(rr),[Alpha,0]).
			% rather special purpose!




