diff options
| author | Tim Redfern <tim@getdrop.com> | 2018-05-22 00:00:06 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@getdrop.com> | 2018-05-22 00:00:06 +0100 |
| commit | 459d1daf71dd8991c60dc8c84d1154802eec331b (patch) | |
| tree | 0a8407a7aad9d4e8fbbd51287bb921f69ae1d073 /gui/src/lineTransformer.cpp | |
| parent | 880f710768391dc3a3399fc1896447a9e6c34fa4 (diff) | |
OE started
Diffstat (limited to 'gui/src/lineTransformer.cpp')
| -rw-r--r-- | gui/src/lineTransformer.cpp | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/gui/src/lineTransformer.cpp b/gui/src/lineTransformer.cpp deleted file mode 100644 index 080eb9d..0000000 --- a/gui/src/lineTransformer.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include "lineTransformer.h" - - -void lineTransformer::drawWarpFrame(glm::vec2 warpframe[4]){ - ofSetColor(255,255,255); - ofNoFill(); - for (int i=0;i<4;i++){ - ofDrawCircle(warpframe[i],25); - ofDrawLine(warpframe[i],warpframe[(i+1)%4]); - } -} - -void lineTransformer::gaussianElimination(float * input, int n) -{ - auto i = 0; - auto j = 0; - auto m = n - 1; - - while (i < m && j < n) - { - auto iMax = i; - for (auto k = i + 1; k < m; ++k) - { - if (fabs(input[k * n + j]) > fabs(input[iMax * n + j])) - { - iMax = k; - } - } - - if (input[iMax * n + j] != 0) - { - if (i != iMax) - { - for (auto k = 0; k < n; ++k) - { - auto ikIn = input[i * n + k]; - input[i * n + k] = input[iMax * n + k]; - input[iMax * n + k] = ikIn; - } - } - - float ijIn = input[i * n + j]; - for (auto k = 0; k < n; ++k) - { - input[i * n + k] /= ijIn; - } - - for (auto u = i + 1; u < m; ++u) - { - auto ujIn = input[u * n + j]; - for (auto k = 0; k < n; ++k) - { - input[u * n + k] -= ujIn * input[i * n + k]; - } - } - - ++i; - } - ++j; - } - - for (auto i = m - 2; i >= 0; --i) - { - for (auto j = i + 1; j < n - 1; ++j) - { - input[i * n + m] -= input[i * n + j] * input[j * n + m]; - } - } -} - -glm::mat4 lineTransformer::getPerspectiveTransformMatrix(const glm::vec2 src[4], const glm::vec2 dst[4]) -{ - float p[8][9] = - { - { -src[0][0], -src[0][1], -1, 0, 0, 0, src[0][0] * dst[0][0], src[0][1] * dst[0][0], -dst[0][0] }, // h11 - { 0, 0, 0, -src[0][0], -src[0][1], -1, src[0][0] * dst[0][1], src[0][1] * dst[0][1], -dst[0][1] }, // h12 - { -src[1][0], -src[1][1], -1, 0, 0, 0, src[1][0] * dst[1][0], src[1][1] * dst[1][0], -dst[1][0] }, // h13 - { 0, 0, 0, -src[1][0], -src[1][1], -1, src[1][0] * dst[1][1], src[1][1] * dst[1][1], -dst[1][1] }, // h21 - { -src[2][0], -src[2][1], -1, 0, 0, 0, src[2][0] * dst[2][0], src[2][1] * dst[2][0], -dst[2][0] }, // h22 - { 0, 0, 0, -src[2][0], -src[2][1], -1, src[2][0] * dst[2][1], src[2][1] * dst[2][1], -dst[2][1] }, // h23 - { -src[3][0], -src[3][1], -1, 0, 0, 0, src[3][0] * dst[3][0], src[3][1] * dst[3][0], -dst[3][0] }, // h31 - { 0, 0, 0, -src[3][0], -src[3][1], -1, src[3][0] * dst[3][1], src[3][1] * dst[3][1], -dst[3][1] }, // h32 - }; - - gaussianElimination(&p[0][0], 9); - - return glm::mat4(p[0][8], p[3][8], 0, p[6][8], - p[1][8], p[4][8], 0, p[7][8], - 0, 0, 1, 0, - p[2][8], p[5][8], 0, 1); -} - -ofPolyline lineTransformer::polyLineTransform(const ofMatrix4x4 xform, const ofPolyline& poly){ - ofPolyline tempPoly; - for (auto& p:poly){ - tempPoly.addVertex(ofVec3f(p)*xform); - } - return tempPoly; -} - -colourPolyline lineTransformer::polyLineTransform(const ofMatrix4x4 xform,colourPolyline& poly){ - colourPolyline tempPoly; - for (int i=0;i<poly.size();i++){ - tempPoly.addVertex(ofVec3f(poly[i])*xform,poly.getColourAt(i)); - } - return tempPoly; -} - - -ofPolyline lineTransformer::makePolygon(int num,float diam){ - ofPolyline poly; - float step=PI*2/num; - for (int i=0;i<=num;i++){ - poly.addVertex(cos(step*i)*diam,sin(step*i)*diam); - } - return poly; -} - -void lineTransformer::drawPoly(ofPolyline poly,float x,float y){ - glPushMatrix(); - ofTranslate(x,y); - poly.draw(); - for (int i=0;i<poly.size();i++){ - ofDrawBitmapString(poly.getDegreesAtIndex(i),poly[i].x+10,poly[i].y+10,0); - } - glPopMatrix(); -} |
