Stefan Schuermans commited on 2017-06-07 21:38:03
Showing 7 changed files, with 27 additions and 9 deletions.
... | ... |
@@ -118,3 +118,13 @@ void Box::getRelative(const Point &abs, Point &rel) const |
118 | 118 |
} |
119 | 119 |
} |
120 | 120 |
|
121 |
+/// expand box (centered) in order to make it quadratic |
|
122 |
+Box Box::expandQuadratic() const |
|
123 |
+{ |
|
124 |
+ Point delta = mTR - mBL; |
|
125 |
+ double max = delta.mX > delta.mY ? delta.mX : delta.mY; |
|
126 |
+ Point fix(max - delta.mX, max - delta.mY); |
|
127 |
+ fix *= 0.5; |
|
128 |
+ return Box(mTR + fix, mBL - fix); |
|
129 |
+} |
|
130 |
+ |
... | ... |
@@ -33,6 +33,8 @@ public: |
33 | 33 |
bool isIntersecting(const Box *pBox) const; |
34 | 34 |
bool getIntersection(const Box *pBox, Box *pIntersect) const; |
35 | 35 |
void getRelative(const Point &abs, Point &rel) const; |
36 |
+ /// expand box (centered) in order to make it quadratic |
|
37 |
+ Box expandQuadratic() const; |
|
36 | 38 |
Point mBL, mTR; |
37 | 39 |
}; |
38 | 40 |
|
... | ... |
@@ -88,13 +88,14 @@ void Distri::writePixels(std::ostream & strm) const |
88 | 88 |
} |
89 | 89 |
} |
90 | 90 |
|
91 |
-void Distri::writeSimPixels(std::ostream & strm, const Box & boundsVideo) const |
|
91 |
+void Distri::writeSimPixels(std::ostream & strm, |
|
92 |
+ const Box & boundsVideoQuad) const |
|
92 | 93 |
{ |
93 | 94 |
std::vector<Chain>::const_iterator itC; |
94 | 95 |
unsigned int c; |
95 | 96 |
for (itC = mChains.begin(), c = 0; itC != mChains.end(); ++itC, ++c) { |
96 | 97 |
strm << "output " << mNo << "," << c << " ="; |
97 |
- itC->writeSimPixels(strm, boundsVideo); |
|
98 |
+ itC->writeSimPixels(strm, boundsVideoQuad); |
|
98 | 99 |
strm << std::endl; |
99 | 100 |
} |
100 | 101 |
} |
... | ... |
@@ -45,7 +45,7 @@ public: |
45 | 45 |
void writeDistri(std::ostream & strm) const; |
46 | 46 |
void writeMapping(std::ostream & strm) const; |
47 | 47 |
void writePixels(std::ostream & strm) const; |
48 |
- void writeSimPixels(std::ostream & strm, const Box & boundsVideo) const; |
|
48 |
+ void writeSimPixels(std::ostream & strm, const Box & boundsVideoQuad) const; |
|
49 | 49 |
size_t countPixels() const; |
50 | 50 |
private: |
51 | 51 |
unsigned int mNo, mChainCnt, mPixelCnt; |
... | ... |
@@ -534,6 +534,10 @@ static int writeSimCfg(const std::vector<Distri> &distris, |
534 | 534 |
const Box & boundsVideo, |
535 | 535 |
const std::string & strSimCfgFileName) |
536 | 536 |
{ |
537 |
+ /* make video bounds quadratic |
|
538 |
+ in order to keep aspect ratio of simulator image */ |
|
539 |
+ Box boundsVideoQuad = boundsVideo.expandQuadratic(); |
|
540 |
+ |
|
537 | 541 |
// open output file |
538 | 542 |
std::ofstream strm(strSimCfgFileName.c_str(), std::ios::out); |
539 | 543 |
if (!strm.is_open()) { |
... | ... |
@@ -555,7 +559,7 @@ static int writeSimCfg(const std::vector<Distri> &distris, |
555 | 559 |
|
556 | 560 |
// simulated pixels |
557 | 561 |
for (itD = distris.begin(); itD != distris.end(); ++itD) |
558 |
- itD->writeSimPixels(strm, boundsVideo); |
|
562 |
+ itD->writeSimPixels(strm, boundsVideoQuad); |
|
559 | 563 |
strm << std::endl; |
560 | 564 |
|
561 | 565 |
strm.close(); |
... | ... |
@@ -58,12 +58,13 @@ void Pixel::writePixel(std::ostream & strm) const |
58 | 58 |
strm << " " << mX << "," << mY; |
59 | 59 |
} |
60 | 60 |
|
61 |
-void Pixel::writeSimPixel(std::ostream & strm, const Box & boundsVideo) const |
|
61 |
+void Pixel::writeSimPixel(std::ostream & strm, |
|
62 |
+ const Box & boundsVideoQuad) const |
|
62 | 63 |
{ |
63 | 64 |
Point c, bl, tr; |
64 |
- boundsVideo.getRelative(mCenter, c); |
|
65 |
- boundsVideo.getRelative(mBounds.mBL, bl); |
|
66 |
- boundsVideo.getRelative(mBounds.mTR, tr); |
|
65 |
+ boundsVideoQuad.getRelative(mCenter, c); |
|
66 |
+ boundsVideoQuad.getRelative(mBounds.mBL, bl); |
|
67 |
+ boundsVideoQuad.getRelative(mBounds.mTR, tr); |
|
67 | 68 |
double r1 = (c - bl).abs(); |
68 | 69 |
double r2 = (c - tr).abs(); |
69 | 70 |
double r = r1 > r2 ? r1 : r2; |
... | ... |
@@ -40,7 +40,7 @@ public: |
40 | 40 |
int pixCoord(const Point &pix0, const Point &pixSz, |
41 | 41 |
unsigned int width, unsigned int height); |
42 | 42 |
void writePixel(std::ostream & strm) const; |
43 |
- void writeSimPixel(std::ostream & strm, const Box & boundsVideo) const; |
|
43 |
+ void writeSimPixel(std::ostream & strm, const Box & boundsVideoQuad) const; |
|
44 | 44 |
private: |
45 | 45 |
const Object *mpObjPixel; |
46 | 46 |
Box mBounds; |
47 | 47 |