git-svn-id: https://reactphysics3d.googlecode.com/svn/trunk@231 92aac97c-a6ce-11dd-a772-7fcde58d38e6
This commit is contained in:
parent
4b1dbb2f47
commit
2bd9701164
|
@ -55,6 +55,7 @@ class Vector3D {
|
|||
Vector3D getOpposite() const; // Return the vector in the opposite direction
|
||||
double scalarProduct(const Vector3D& vector) const; // Scalar product of two vectors
|
||||
Vector3D crossProduct(const Vector3D& vector) const; // Cross product of two vectors
|
||||
bool isParallelWith(const Vector3D& vector) const; // Return true if two vectors are parallel
|
||||
|
||||
// --- Overloaded operators --- //
|
||||
Vector3D operator+(const Vector3D& vector) const; // Overloaded operator for addition
|
||||
|
@ -126,6 +127,11 @@ inline Vector3D Vector3D::crossProduct(const Vector3D& vector) const {
|
|||
return Vector3D(y * vector.z - z * vector.y, z * vector.x - x * vector.z , x * vector.y - y * vector.x);
|
||||
}
|
||||
|
||||
// Return true if two vectors are parallel
|
||||
inline bool Vector3D::isParallelWith(const Vector3D& vector) const {
|
||||
return (approxEqual(this->scalarProduct(vector), length * vector.getLength()));
|
||||
}
|
||||
|
||||
// Overloaded operator for multiplication between a number and a Vector3D (inline)
|
||||
inline Vector3D operator * (double number, const Vector3D& vector) {
|
||||
// Compute and return the result vector
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
// Constant used for the precision
|
||||
const double EPSILON = 0.00001;
|
||||
const double ONE_MINUS_EPSILON = 0.99999;
|
||||
|
||||
// Pi constant
|
||||
const double PI = 3.14159265;
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
// function to test if two numbers are (almost) equal
|
||||
// We test if two numbers a and b are such that (a-b) are in [-EPSILON; EPSILON]
|
||||
inline bool equal(double a, double b) {
|
||||
inline bool approxEqual(double a, double b) {
|
||||
double difference = a - b;
|
||||
return (difference < EPSILON && difference > -EPSILON);
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ inline std::vector<reactphysics3d::Vector3D> movePoints(const std::vector<reactp
|
|||
// will be another Segment3D.
|
||||
inline reactphysics3d::Segment3D computeParallelSegmentsIntersection(const reactphysics3d::Segment3D& segment1, const reactphysics3d::Segment3D& segment2) {
|
||||
// The two segments should be colinear
|
||||
assert(equal(std::abs(segment1.getSegmentVector().scalarProduct(segment2.getSegmentVector())), segment1.getSegmentVector().length() * segment2.getSegmentVector().length()));
|
||||
assert(approxEqual(std::abs(segment1.getSegmentVector().scalarProduct(segment2.getSegmentVector())), segment1.getSegmentVector().length() * segment2.getSegmentVector().length()));
|
||||
|
||||
// Result segment
|
||||
reactphysics3d::Segment3D resultSegment;
|
||||
|
|
Loading…
Reference in New Issue
Block a user