#define SEEN_TRANSF_MAT_3x4_C
/*
* 3x4 transformation matrix to map points from projective 3-space into the projective plane
*
* Authors:
* Maximilian Albert <Anhalter42@gmx.de>
*
* Copyright (C) 2007 Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include "transf_mat_3x4.h"
#include "svg/stringstream.h"
#include "syseq.h"
#include "document.h"
#include "inkscape.h"
namespace Proj {
for (unsigned int i = 0; i < 3; ++i) {
for (unsigned int j = 0; j < 4; ++j) {
}
}
}
for (unsigned int i = 0; i < 3; ++i) {
}
}
for (unsigned int i = 0; i < 3; ++i) {
for (unsigned int j = 0; j < 4; ++j) {
}
}
}
}
double x = tmat[0][0] * point[0] + tmat[0][1] * point[1] + tmat[0][2] * point[2] + tmat[0][3] * point[3];
double y = tmat[1][0] * point[0] + tmat[1][1] * point[1] + tmat[1][2] * point[2] + tmat[1][3] * point[3];
double w = tmat[2][0] * point[0] + tmat[2][1] * point[1] + tmat[2][2] * point[2] + tmat[2][3] * point[3];
return Pt2 (x, y, w);
}
g_print ("No solution. Please investigate.\n");
} else {
g_print ("Infinitely many solutions. Please investigate.\n");
}
}
}
void
// FIXME: Do we need to adapt the coordinates in any way or can we just use them as they are?
for (int i = 0; i < 3; ++i) {
}
}
void
if (has_finite_image(axis)) {
} else {
}
}
gchar *
}
/* Check for equality (with a small tolerance epsilon) */
bool
{
// Should we allow a certain tolerance or "normalize" the matrices first?
for (int i = 0; i < 3; ++i) {
return false;
}
}
return true;
}
/* Multiply a projective matrix by an affine matrix (by only multiplying the 'affine part' of the
* projective matrix) */
for (int j = 0; j < 4; ++j) {
}
return ret;
}
// FIXME: Shouldn't rather operator* call operator*= for efficiency? (Because in operator*=
// there is in principle no need to create a temporary object, which happens in the assignment)
*this = *this * A;
return *this;
}
void
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
}
}
}
void
g_print ("Transformation matrix:\n");
for (int i = 0; i < 3; ++i) {
g_print (" ");
for (int j = 0; j < 4; ++j) {
}
g_print ("\n");
}
}
void
}
} // namespace Proj
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :