Utilisation de Quad::length(), passage en const de quelques méthodes.
This commit is contained in:
parent
ea5cc15c7e
commit
12caee8470
|
@ -30,22 +30,22 @@ Quad Quad::insetNESW(float offset) const {
|
||||||
Quad Quad::makeParallelogram() {
|
Quad Quad::makeParallelogram() {
|
||||||
int l1, l2;
|
int l1, l2;
|
||||||
|
|
||||||
if(Segment(c[NW],c[NE]).length() < Segment(c[SE],c[SW]).length()) {
|
if(length(N) < length(S)) {
|
||||||
if((l1 = Segment(c[NE],c[SE]).length()) < (l2 = Segment(c[SW],c[NW]).length())) {
|
if((l1 = length(E)) < (l2 = length(W))) {
|
||||||
c[SW] = Segment(c[NW],c[SW]).reduce(l1).v;
|
c[SW] = Segment(c[NW],c[SW]).reduce(l1).v;
|
||||||
c[SE] = c[SW] + (c[NE] - c[NW]);
|
c[SE] = c[SW] + (c[NE] - c[NW]);
|
||||||
}
|
}
|
||||||
else if((l1 = Segment(c[NE],c[SE]).length()) > (l2 = Segment(c[SW],c[NW]).length())) {
|
else if((l1 = length(E)) > (l2 = length(W))) {
|
||||||
c[SE] = Segment(c[NE],c[SE]).reduce(l2).v;
|
c[SE] = Segment(c[NE],c[SE]).reduce(l2).v;
|
||||||
c[SW] = c[SE] + (c[NW] - c[NE]);
|
c[SW] = c[SE] + (c[NW] - c[NE]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((l1 = Segment(c[NE],c[SE]).length()) < (l2 = Segment(c[SW],c[NW]).length())) {
|
if((l1 = length(E)) < (l2 = length(W))) {
|
||||||
c[NW] = Segment(c[SW],c[NW]).reduce(l1).v;
|
c[NW] = Segment(c[SW],c[NW]).reduce(l1).v;
|
||||||
c[NE] = c[NW] + (c[SE] - c[SW]);
|
c[NE] = c[NW] + (c[SE] - c[SW]);
|
||||||
}
|
}
|
||||||
else if((l1 = Segment(c[NE],c[SE]).length()) > (l2 = Segment(c[SW],c[NW]).length())) {
|
else if((l1 = length(E)) > (l2 = length(W))) {
|
||||||
c[NE] = Segment(c[SE],c[NE]).reduce(l2).v;
|
c[NE] = Segment(c[SE],c[NE]).reduce(l2).v;
|
||||||
c[NW] = c[NE] + (c[SW] - c[SE]);
|
c[NW] = c[NE] + (c[SW] - c[SE]);
|
||||||
}
|
}
|
||||||
|
@ -54,56 +54,35 @@ Quad Quad::makeParallelogram() {
|
||||||
return Quad(c[0],c[1],c[2],c[3]);
|
return Quad(c[0],c[1],c[2],c[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::length(Cardinal cn) {
|
float Quad::length(Cardinal side) const {
|
||||||
if(cn == N)
|
return Segment(c[NW+side],c[NE+side]).length();
|
||||||
return Segment(c[NW],c[NE]).length();
|
|
||||||
else if(cn == S)
|
|
||||||
return Segment(c[SW],c[SE]).length();
|
|
||||||
else if(cn == E)
|
|
||||||
return Segment(c[NE],c[SE]).length();
|
|
||||||
else if(cn == W)
|
|
||||||
return Segment(c[SW],c[NW]).length();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::minLengthNS() {
|
float Quad::minLengthNS() const {
|
||||||
return std::min(
|
return std::min(length(N), length(S));
|
||||||
Segment(c[NW],c[NE]).length(),
|
|
||||||
Segment(c[SE],c[SW]).length()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::minLengthEW() {
|
float Quad::minLengthEW() const {
|
||||||
return std::min(
|
return std::min(length(E), length(W));
|
||||||
Segment(c[NE],c[SE]).length(),
|
|
||||||
Segment(c[SW],c[NW]).length()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::maxLengthNS() {
|
float Quad::maxLengthNS() const {
|
||||||
return std::max(
|
return std::max(length(N), length(S));
|
||||||
Segment(c[NW],c[NE]).length(),
|
|
||||||
Segment(c[SE],c[SW]).length()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::maxLengthEW() {
|
float Quad::maxLengthEW() const {
|
||||||
return std::max(
|
return std::max(length(E), length(W));
|
||||||
Segment(c[NE],c[SE]).length(),
|
|
||||||
Segment(c[SW],c[NW]).length()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::minLength() {
|
float Quad::minLength() const {
|
||||||
return std::min(minLengthNS(), minLengthEW());
|
return std::min(minLengthNS(), minLengthEW());
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::maxLength() {
|
float Quad::maxLength() const {
|
||||||
return std::max(maxLengthNS(), maxLengthEW());
|
return std::max(maxLengthNS(), maxLengthEW());
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::minAngle() {
|
float Quad::minAngle() const {
|
||||||
float a = 370; // > 360.
|
float a = 370; // > 360.
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
a = std::min(a, Triangle(c[NE+i], c[SE+i], c[SW+i]).angle());
|
a = std::min(a, Triangle(c[NE+i], c[SE+i], c[SW+i]).angle());
|
||||||
|
@ -111,7 +90,7 @@ float Quad::minAngle() {
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Quad::maxAngle() {
|
float Quad::maxAngle() const {
|
||||||
float a = 0;
|
float a = 0;
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
a = std::max(a, Triangle(c[NE+i], c[SE+i], c[SW+i]).angle());
|
a = std::max(a, Triangle(c[NE+i], c[SE+i], c[SW+i]).angle());
|
||||||
|
|
|
@ -27,15 +27,15 @@ class Quad {
|
||||||
Quad inset(Cardinal side, float offset) const;
|
Quad inset(Cardinal side, float offset) const;
|
||||||
Quad insetNESW(float offsetN, float offsetE, float offsetS, float offsetW) const;
|
Quad insetNESW(float offsetN, float offsetE, float offsetS, float offsetW) const;
|
||||||
Quad insetNESW(float offset) const;
|
Quad insetNESW(float offset) const;
|
||||||
float length(Cardinal c);
|
float length(Cardinal side) const;
|
||||||
float minLengthNS();
|
float minLengthNS() const;
|
||||||
float minLengthEW();
|
float minLengthEW() const;
|
||||||
float maxLengthNS();
|
float maxLengthNS() const;
|
||||||
float maxLengthEW();
|
float maxLengthEW() const;
|
||||||
float minLength();
|
float minLength() const;
|
||||||
float maxLength();
|
float maxLength() const;
|
||||||
float minAngle();
|
float minAngle() const;
|
||||||
float maxAngle();
|
float maxAngle() const;
|
||||||
void cutCornerCorner(Coin from) const;
|
void cutCornerCorner(Coin from) const;
|
||||||
Quad makeParallelogram();
|
Quad makeParallelogram();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user