All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ode4j.ode.DMass Maven / Gradle / Ivy

/*************************************************************************
 *                                                                       *
 * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.       *
 * All rights reserved.  Email: [email protected]   Web: www.q12.org          *
 * Open Dynamics Engine 4J, Copyright (C) 2009-2014 Tilmann Zaeschke     *
 * All rights reserved.  Email: [email protected]   Web: www.ode4j.org        *
 *                                                                       *
 * This library is free software; you can redistribute it and/or         *
 * modify it under the terms of EITHER:                                  *
 *   (1) The GNU Lesser General Public License as published by the Free  *
 *       Software Foundation; either version 2.1 of the License, or (at  *
 *       your option) any later version. The text of the GNU Lesser      *
 *       General Public License is included with this library in the     *
 *       file LICENSE.TXT.                                               *
 *   (2) The BSD-style license that is included with this library in     *
 *       the file ODE-LICENSE-BSD.TXT and ODE4J-LICENSE-BSD.TXT.         *
 *                                                                       *
 * This library is distributed in the hope that it will be useful,       *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files    *
 * LICENSE.TXT, ODE-LICENSE-BSD.TXT and ODE4J-LICENSE-BSD.TXT for more   *
 * details.                                                              *
 *                                                                       *
 *************************************************************************/
package org.ode4j.ode;

import org.ode4j.math.DMatrix3C;
import org.ode4j.math.DVector3C;


/**
 * 
 */
public interface DMass extends DMassC {

	/**
	 * Set mass, center and inertia matrix to zero.
	 */
	void setZero();

	/**
	 * Set all parameters of the mass.
	 * @param total_mass total mass
	 * @param cgx center of gravity x
	 * @param cgy center of gravity y
	 * @param cgz center of gravity x
	 * @param I11 intertia matrix 11
	 * @param I22 intertia matrix 22
	 * @param I33 intertia matrix 33
	 * @param I12 intertia matrix 12
	 * @param I13 intertia matrix 13
	 * @param I23 intertia matrix 23
	 */
	void setParameters (double total_mass, double cgx, double cgy, double cgz,
			double I11, double I22, double I33,
			double I12, double I13, double I23);
	
	void setSphere (double density, double radius);
	void setSphereTotal (double total_mass, double radius);

 	void setTrimesh(double density, DTriMesh geom);
 	void setTrimeshTotal(double total_mass, DTriMesh geom);
	
	/** 
	 * @param density density 
	 * @param direction 1=x; 2=y; 3=z 
	 * @param radius radius
	 * @param length length 
	 */
	void setCapsule (double density, int direction, double radius, double length);
	/** 
	 * @param total_mass total mass
	 * @param direction 1=x; 2=y; 3=z 
	 * @param radius radius
	 * @param length length
	 */
	void setCapsuleTotal (double total_mass, int direction, double radius, double length);
	
	/** 
	 * @param density density
	 * @param direction 1=x; 2=y; 3=z 
	 * @param radius radius 
	 * @param length length
	 */
	void setCylinder (double density, int direction, double radius, double length);
	/** 
	 * @param total_mass total mass
	 * @param direction 1=x; 2=y; 3=z 
	 * @param radius radius
	 * @param length length
	 */
	void setCylinderTotal (double total_mass, int direction, double radius, double length);

	void setBox (double density, double lx, double ly, double lz);
	void setBox (double density, DVector3C lxyz);
	void setBoxTotal (double total_mass, double lx, double ly, double lz);
	
	void adjust (double new_total_mass);
	
	void translate (double x, double y, double z);
	void translate(DVector3C c);
	
	void rotate (DMatrix3C R);
	
	void add (DMassC b);

	//by TZ
	@Override
	double getMass();
	void setMass(double total_mass);

	/**
	 * Get center of gravity.
	 * @return center of gravity
	 */
	@Override
	DVector3C getC();
	/**
	 * Set inertia matrix.
	 * @return inertia matrix
	 */
	@Override
	DMatrix3C getI();
	/**
	 * @param c mass center
	 */
	void setC(DVector3C c);
	/**
	 * @param I inertia matrix
	 */
	void setI(DMatrix3C I);

	/**
	 * Check if a mass structure has valid value.
	 * The function check if the mass and inertia matrix are positive definits
	 *
	 * @return true if both condition are met
	 */
	@Override
	boolean check();


	
	
	//	/**
//	 * Check if a mass structure has valid value.
//	 * The function check if the mass and innertia matrix are positive definits
//	 *
//	 * @param m A mass structure to check
//	 *
//	 * @return 1 if both codition are met
//	 */
//	//ODE_API 
//	public abstract int dMassCheck(final dMass m);
//
//	//ODE_API 
//	public abstract void dMassSetZero (dMass m);
//
//	//ODE_API 
//	public abstract void dMassSetParameters (dMass m, double themass,
//			double cgx, double cgy, double cgz,
//			double I11, double I22, double I33,
//			double I12, double I13, double I23);
//
//	//ODE_API 
//	public abstract void dMassSetSphere (dMass m, double density, double radius);
//	//ODE_API 
//	public abstract void dMassSetSphereTotal (dMass m, double total_mass, double radius);
//
//	//ODE_API 
//	public abstract void dMassSetCapsule (dMass m, double density, int direction,
//			double radius, double length);
//	//ODE_API 
//	public abstract void dMassSetCapsuleTotal (dMass m, double total_mass, int direction,
//			double radius, double length);
//
//	//ODE_API 
//	public abstract void dMassSetCylinder (dMass m, double density, int direction,
//			double radius, double length);
//	//ODE_API 
//	public abstract void dMassSetCylinderTotal (dMass m, double total_mass, int direction,
//			double radius, double length);
//
//	//ODE_API 
//	public abstract void dMassSetBox (dMass m, double density,
//			double lx, double ly, double lz);
//	//ODE_API 
//	public abstract void dMassSetBoxTotal (dMass m, double total_mass,
//			double lx, double ly, double lz);
//
//	//ODE_API 
//	public abstract void dMassSetTrimesh (dMass m, double density, dxGeom g);
//
//	//ODE_API 
//	public abstract void dMassSetTrimeshTotal (dMass m, double total_mass, dxGeom g);
//
//	//ODE_API 
//	public abstract void dMassAdjust (dMass m, double newmass);
//
//	//ODE_API 
//	public abstract void dMassTranslate (dMass m, double x, double y, double z);
//
//	//ODE_API v
//	public abstract void dMassRotate (dMass m, final dMatrix3 R);
//
//	//ODE_API 
//	public abstract void dMassAdd (dMass a, final dMass b);

	// Backwards compatible API
	//#define dMassSetCappedCylinder dMassSetCapsule
	//#define dMassSetCappedCylinderTotal dMassSetCapsuleTotal


//	protected void setZero()
//	{ dMassSetZero (this); }
//	
//	protected void setParameters (double themass, double cgx, double cgy, double cgz,
//			double I11, double I22, double I33,
//			double I12, double I13, double I23)
//	{ dMassSetParameters (this,themass,cgx,cgy,cgz,I11,I22,I33,I12,I13,I23); }
//	
//	protected void setSphere (double density, double radius)
//	{ dMassSetSphere (this,density,radius); }
//	
//	protected void setCapsule (double density, int direction, double a, double b)
//	//  { dMassSetCappedCylinder (this,density,direction,a,b); }
//	{ dMassSetCapsule (this,density,direction,a,b); }
//	
//	protected void setCappedCylinder (double density, int direction, double a, double b)
//	{ setCapsule(density, direction, a, b); }
//	
//	public void setBox (double density, double lx, double ly, double lz)
//	{ dMassSetBox (this,density,lx,ly,lz); }
//	
//	public void adjust (double newmass)
//	{ dMassAdjust (this,newmass); }
//	
//	protected void translate (double x, double y, double z)
//	{ dMassTranslate (this,x,y,z); }
//	
//	protected void rotate (final dMatrix3 R)
//	{ dMassRotate (this,R); }
//	
//	protected void add (final dMass b)
//	{ dMassAdd (this,b); }
//
//	//by TZ
//	public abstract dVector3 getC();
//
//	//by TZ
//	public abstract double getMass();
//
//	//by TZ
//	public abstract void setMass(double d);
//
//	//by TZ
//	public abstract dMatrix3 getI();
//
//	public abstract void setC(dVector3 c);
//
//	public abstract void setI(dMatrix3 I);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy