All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreTools::Matrix4x4 Class Reference

#include <DoubleMatrix.h>

Inheritance diagram for QGpCoreTools::Matrix4x4:
QGpCoreTools::DoubleMatrix QGpCoreTools::Matrix< double >

List of all members.

Public Member Functions

 Matrix4x4 ()
 Matrix4x4 (const Matrix4x4 &o)
 Matrix4x4 (const Matrix< double > &o)
DoubleMatrix operator* (const DoubleMatrix &m) const
Point operator* (const Point &p) const
Segment operator* (const Segment &s) const
void rotation (AxisType ax, const Angle &angle)
Matrix3x3 rotationOnly () const

Constructor & Destructor Documentation

: DoubleMatrix(4, 4) {}
: DoubleMatrix(static_cast<const DoubleMatrix&>(o)) {}
QGpCoreTools::Matrix4x4::Matrix4x4 ( const Matrix< double > &  o) [inline]

References QGpCoreTools::Matrix< T >::columnCount(), and QGpCoreTools::Matrix< T >::rowCount().

: DoubleMatrix(static_cast<const DoubleMatrix&>(o)) {ASSERT(o.columnCount()==4 && o.rowCount()==4);}

Member Function Documentation

DoubleMatrix QGpCoreTools::Matrix4x4::operator* ( const DoubleMatrix m) const [inline]
Point QGpCoreTools::Matrix4x4::operator* ( const Point p) const [inline]

References QGpCoreTools::Matrix< double >::_d, QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreTools::Point::setZ(), TRACE, QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and QGpCoreTools::Point::z().

{
  TRACE;
  Point rp;
  const double * values=_d->values();
  rp.setX(values[0]*p.x()+values[4]*p.y()+values[8]*p.z()+values[12]);
  rp.setY(values[1]*p.x()+values[5]*p.y()+values[9]*p.z()+values[13]);
  rp.setZ(values[2]*p.x()+values[6]*p.y()+values[10]*p.z()+values[14]);
  return rp;
}
Segment QGpCoreTools::Matrix4x4::operator* ( const Segment s) const

References QGpCoreTools::Segment::point().

  {
    Point p1=(*this)*s.point(0);
    Point p2=(*this)*s.point(1);
    return Segment(p1, p2);
  }
void QGpCoreTools::Matrix4x4::rotation ( AxisType  ax,
const Angle angle 
) [inline]

Sets matrix as a rotation matrix. The angle is counted using the right hand convention. Angle is in radians.

Reimplemented from QGpCoreTools::DoubleMatrix.

References QGpCoreTools::Matrix< double >::identity().

{
  identity();
  DoubleMatrix::rotation(ax, angle);
}

Returns the upper left submatrix corresponding to the rotation part.

References QGpCoreTools::Matrix< double >::data(), QGpCoreTools::Matrix< T >::data(), and TRACE.

  {
    TRACE;
    Matrix3x3 m;
    const double * d1=data();
    double * d2=m.data();
    d2[0]=d1[0];
    d2[1]=d1[1];
    d2[2]=d1[2];
    d2[3]=d1[4];
    d2[4]=d1[5];
    d2[5]=d1[6];
    d2[6]=d1[8];
    d2[7]=d1[9];
    d2[8]=d1[10];
    return m;
  }

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines