Exemple #1
0
/// Matrix multiplication (m1 * m2)
gMatrix3 operator* (const gMatrix3& m1, const gMatrix3& m2)
{
	return gMatrix3(
	gVector3(m1[0] * m2.getColumn(0), m1[0] * m2.getColumn(1), m1[0] * m2.getColumn(2)),
	gVector3(m1[1] * m2.getColumn(0), m1[1] * m2.getColumn(1), m1[1] * m2.getColumn(2)),
	gVector3(m1[2] * m2.getColumn(0), m1[2] * m2.getColumn(1), m1[2] * m2.getColumn(2))
	);//redo this with matrix * vector operator
}
Exemple #2
0
///----------------------------------------------------------------------
/// Static Initializers
///----------------------------------------------------------------------	
/// Creates a 3-D rotation matrix.
/// Takes an angle in degrees and outputs a 3x3 rotation matrix
gMatrix3 gMatrix3::rotation2D(float angle)
{
	//change angle degrees to radians
	//(degrees * PI) / 180
	float radians = (angle * M_PI) / 180;
	return gMatrix3( gVector3(cos(radians), -sin(radians), 0),
					 gVector3(sin(radians),  cos(radians), 0),
					 gVector3(			 0,             0, 1) 
				   );
}
Exemple #3
0
Poly::Poly() :Geometry()
{
	//defaults a two vertex line segment
	v.push_back(gVector3(-1, 0, 1));
	v.push_back(gVector3(-0.5, -0.5, 1));
	v.push_back(gVector3(0.5, -0.5, 1));
	v.push_back(gVector3(1, 0, 1));
	v.push_back(gVector3(0.5, 0.5, 1));
	v.push_back(gVector3(-0.5, 0.5, 1));
	shape = "poly";
}
Exemple #4
0
/// Vector Addition (v1 + v2)
gVector3 operator+ (const gVector3& v1, const gVector3& v2)
{
	return gVector3(v1[0] + v2[0], v1[1] + v2[1], v1[2] + v2[2]);
}
Exemple #5
0
/// Cross Product (v1 % v2)
gVector3 operator% (const gVector3& v1, const gVector3& v2)
{
	return gVector3(+(v1[1] * v2[2] - v1[2] * v2[1]),
					-(v1[0] * v2[2] - v1[2] * v2[0]),
					+(v1[0] * v2[1] - v1[1] * v2[0]) );
}
Exemple #6
0
/// Scalar Division (v/c)
gVector3 operator/ (const gVector3& v, float c)
{
	return gVector3(v[0] / c, v[1] / c, v[2] / c);
}
Exemple #7
0
/// Scalar Multiplication (c * v)
gVector3 operator* (float c, const gVector3& v)
{
	return gVector3(c * v[0], c * v[1], c * v[2]);
}
Exemple #8
0
Square::Square(gVector3& c):rPolygon(4,c){
	points[0] = gVector3(50,50,1);
	points[1] = gVector3(50,-50,1);
	points[2] = gVector3(-50, -50,1);
	points[3] = gVector3(-50,50,1);
}
Exemple #9
0
/// Matrix/vector multiplication (m * v)
/// Assume v is a column vector (ie. a 3x1 matrix)
gVector3 operator* (const gMatrix3& m, const gVector3& v)
{
	return gVector3(m[0] * v, m[1] * v, m[2] * v);
}
Exemple #10
0
/// Takes an x and y scale and outputs a 3x3 scale matrix
gMatrix3 gMatrix3::scale2D(float x, float y)
{
	return gMatrix3(gVector3(x, 0, 0),
					gVector3(0, y, 0),
					gVector3(0, 0, 1));
}
Exemple #11
0
/// Takes an x and y displacement and outputs a 3x3 translation matrix
gMatrix3 gMatrix3::translation2D(float x, float y)
{
	return gMatrix3( gVector3(1, 0, x), 
					 gVector3(0, 1, y),
					 gVector3(0, 0, 1));
}
Exemple #12
0
///----------------------------------------------------------------------
/// Constructors
///----------------------------------------------------------------------
/// Default Constructor.  Initialize to matrix of all 0s.
gMatrix3::gMatrix3()
{
	data[0] = gVector3(); data[1] = gVector3(); data[2] = gVector3();
}
Exemple #13
0
/// Returns a column of the matrix
gVector3 gMatrix3::getColumn(unsigned int index) const
{
	return gVector3(data[0][index],data[1][index],data[2][index]);
}
Exemple #14
0
/// Vector/matrix multiplication (v * m)
/// Assume v is a row vector (ie. a 1x3 matrix)
gVector3 operator* (const gVector3& v, const gMatrix3& m)
{
	return gVector3(v * m[0], v * m[1], v * m[2]);
}
Exemple #15
0
/// Vector Subtraction (v1 - v2)
gVector3 operator- (const gVector3& v1, const gVector3& v2)
{
	return gVector3(v1[0] - v2[0], v1[1] - v2[1], v1[2] - v2[2]);
}
Exemple #16
0
/// Scalar Multiplication (v * c)
gVector3 operator* (const gVector3& v, float c)
{
	return gVector3(v[0] * c, v[1] * c, v[2] * c);
}
Exemple #17
0
/// Generates a 3x3 identity matrix
gMatrix3 gMatrix3::identity()
{
	return gMatrix3(gVector3(1, 0, 0),
					gVector3(0, 1, 0),
					gVector3(0, 0, 1));
}