preparation
This commit is contained in:
		
							
								
								
									
										158
									
								
								include/bounce/dynamics/cloth/bend_force.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								include/bounce/dynamics/cloth/bend_force.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,158 @@ | ||||
| /* | ||||
| * Copyright (c) 2016-2016 Irlan Robson http://www.irlan.net | ||||
| * | ||||
| * This software is provided 'as-is', without any express or implied | ||||
| * warranty.  In no event will the authors be held liable for any damages | ||||
| * arising from the use of this software. | ||||
| * Permission is granted to anyone to use this software for any purpose, | ||||
| * including commercial applications, and to alter it and redistribute it | ||||
| * freely, subject to the following restrictions: | ||||
| * 1. The origin of this software must not be misrepresented; you must not | ||||
| * claim that you wrote the original software. If you use this software | ||||
| * in a product, an acknowledgment in the product documentation would be | ||||
| * appreciated but is not required. | ||||
| * 2. Altered source versions must be plainly marked as such, and must not be | ||||
| * misrepresented as being the original software. | ||||
| * 3. This notice may not be removed or altered from any source distribution. | ||||
| */ | ||||
|  | ||||
| #ifndef B3_BEND_FORCE_H | ||||
| #define B3_BEND_FORCE_H | ||||
|  | ||||
| #include <bounce/dynamics/cloth/force.h> | ||||
|  | ||||
| struct b3BendForceDef : public b3ForceDef | ||||
| { | ||||
| 	b3BendForceDef() | ||||
| 	{ | ||||
| 		type = e_bendForce; | ||||
| 		p1 = nullptr; | ||||
| 		p2 = nullptr; | ||||
| 		p3 = nullptr; | ||||
| 		p4 = nullptr; | ||||
| 		restDistance = 0.0f; | ||||
| 		restAngle = 0.0f; | ||||
| 		structural = 0.0f; | ||||
| 		damping = 0.0f; | ||||
| 	} | ||||
|  | ||||
| 	//  | ||||
| 	void Initialize(b3Particle* particle1, b3Particle* particle2, b3Particle* particle3, b3Particle* particle4,  | ||||
| 		float32 structuralStiffness, float32 dampingStiffness); | ||||
|  | ||||
| 	// Particle 1 | ||||
| 	b3Particle* p1; | ||||
|  | ||||
| 	// Particle 2 | ||||
| 	b3Particle* p2; | ||||
|  | ||||
| 	// Particle 3 | ||||
| 	b3Particle* p3; | ||||
| 	 | ||||
| 	// Particle 4 | ||||
| 	b3Particle* p4; | ||||
| 	 | ||||
| 	// Rest distance | ||||
| 	float32 restDistance; | ||||
| 	 | ||||
| 	// Rest angle | ||||
| 	float32 restAngle; | ||||
|  | ||||
| 	// Structural stiffness | ||||
| 	float32 structural; | ||||
|  | ||||
| 	// Damping stiffness | ||||
| 	float32 damping; | ||||
| }; | ||||
|  | ||||
| //  | ||||
| class b3BendForce : public b3Force | ||||
| { | ||||
| public: | ||||
| 	b3Particle* GetParticle1(); | ||||
|  | ||||
| 	b3Particle* GetParticle2(); | ||||
|  | ||||
| 	b3Particle* GetParticle3(); | ||||
|  | ||||
| 	b3Particle* GetParticle4(); | ||||
| 	 | ||||
| 	float32 GetRestDistance() const; | ||||
| 	 | ||||
| 	float32 GetRestAngle() const; | ||||
|  | ||||
| 	float32 GetStructuralStiffness() const; | ||||
|  | ||||
| 	float32 GetDampingStiffness() const; | ||||
| private: | ||||
| 	friend class b3Force; | ||||
| 	friend class b3Cloth; | ||||
|  | ||||
| 	b3BendForce(const b3BendForceDef* def); | ||||
| 	~b3BendForce(); | ||||
|  | ||||
| 	void Apply(const b3ClothSolverData* data); | ||||
|  | ||||
| 	// Solver shared | ||||
|  | ||||
| 	// Particle 1 | ||||
| 	b3Particle* m_p1; | ||||
|  | ||||
| 	// Particle 2 | ||||
| 	b3Particle* m_p2; | ||||
|  | ||||
| 	// Particle 3 | ||||
| 	b3Particle* m_p3; | ||||
| 	 | ||||
| 	// Particle 4 | ||||
| 	b3Particle* m_p4; | ||||
|  | ||||
| 	// Rest distance | ||||
| 	float32 m_L0; | ||||
|  | ||||
| 	// Rest angle | ||||
| 	float32 m_angle0; | ||||
| 	 | ||||
| 	// Structural stiffness | ||||
| 	float32 m_ks; | ||||
|  | ||||
| 	// Structural stiffness | ||||
| 	float32 m_kd; | ||||
| }; | ||||
|  | ||||
| inline b3Particle* b3BendForce::GetParticle1() | ||||
| { | ||||
| 	return m_p1; | ||||
| } | ||||
|  | ||||
| inline b3Particle* b3BendForce::GetParticle2() | ||||
| { | ||||
| 	return m_p2; | ||||
| } | ||||
|  | ||||
| inline b3Particle* b3BendForce::GetParticle3() | ||||
| { | ||||
| 	return m_p3; | ||||
| } | ||||
|  | ||||
| inline b3Particle* b3BendForce::GetParticle4() | ||||
| { | ||||
| 	return m_p4; | ||||
| } | ||||
|  | ||||
| inline float32 b3BendForce::GetRestAngle() const | ||||
| { | ||||
| 	return m_angle0; | ||||
| } | ||||
|  | ||||
| inline float32 b3BendForce::GetStructuralStiffness() const | ||||
| { | ||||
| 	return m_ks; | ||||
| } | ||||
|  | ||||
| inline float32 b3BendForce::GetDampingStiffness() const | ||||
| { | ||||
| 	return m_kd; | ||||
| } | ||||
|  | ||||
| #endif | ||||
| @@ -31,6 +31,7 @@ enum b3ForceType | ||||
| { | ||||
| 	e_frictionForce, | ||||
| 	e_springForce, | ||||
| 	e_bendForce, | ||||
| }; | ||||
|  | ||||
| struct b3ForceDef | ||||
|   | ||||
| @@ -143,6 +143,7 @@ private: | ||||
| 	friend class b3ClothSolver; | ||||
| 	friend class b3Force; | ||||
| 	friend class b3SpringForce; | ||||
| 	friend class b3BendForce; | ||||
| 	friend class b3FrictionForce; | ||||
|  | ||||
| 	b3Particle(const b3ParticleDef& def, b3Cloth* cloth); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user