From 3386c0f13d471c66a1be8b279da1ba9b20d8536e Mon Sep 17 00:00:00 2001 From: Koen Hillewaert <koen.hillewaert@cenaero.be> Date: Tue, 9 Aug 2016 11:04:55 +0000 Subject: [PATCH] bug fix in quad and tri reorientation for higher orders --- Geo/MQuadrangle.cpp | 4 ++-- Geo/MTriangle.cpp | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Geo/MQuadrangle.cpp b/Geo/MQuadrangle.cpp index 9aa42dea1e..fa7f30395b 100644 --- a/Geo/MQuadrangle.cpp +++ b/Geo/MQuadrangle.cpp @@ -331,7 +331,7 @@ double MQuadrangle::getInnerRadius() void MQuadrangle::reorient(int rot, bool swap) { MVertex* tmp[4]; - if (swap) for (int i=0;i<4;i++) tmp[i] = _v[(8-i-rot)%4]; + if (swap) for (int i=0;i<4;i++) tmp[i] = _v[(4-i+rot)%4]; else for (int i=0;i<4;i++) tmp[i] = _v[(4+i-rot)%4]; std::memcpy(_v,tmp,4*sizeof(MVertex*)); } @@ -342,7 +342,7 @@ void MQuadrangle8::reorient(int rot, bool swap) { MQuadrangle::reorient(rot,swap); MVertex* tmp[4]; - if (swap) for (int i=0;i<4;i++) tmp[i] = _vs[(8-i-rot)%4]; + if (swap) for (int i=0;i<4;i++) tmp[i] = _vs[(7-i+rot)%4]; else for (int i=0;i<4;i++) tmp[i] = _vs[(4+i-rot)%4]; std::memcpy(_vs,tmp,4*sizeof(MVertex*)); } diff --git a/Geo/MTriangle.cpp b/Geo/MTriangle.cpp index ec79b52858..c3c88554d4 100644 --- a/Geo/MTriangle.cpp +++ b/Geo/MTriangle.cpp @@ -269,19 +269,23 @@ void MTriangle::reorient(int rot,bool swap) { MVertex* tmp[3]; std::memcpy(tmp,_v,3*sizeof(MVertex*)); - if (swap) for (int i=0;i<3;i++) _v[i] = tmp[(6-i-rot)%3]; + if (swap) for (int i=0;i<3;i++) _v[i] = tmp[(3-i+rot)%3]; else for (int i=0;i<3;i++) _v[i] = tmp[(3+i-rot)%3]; } -void MTriangle6::reorient(int rot, bool swap) { +#include "HighOrder.h" +void MTriangle6::reorient(int rot, bool swap) { + + Msg::Info("Reorienting triangle 6 with rot %d and swap %d", + rot,swap ? 1:0); if (rot == 0 && !swap) return; MTriangle::reorient(rot,swap); MVertex* tmp[3]; std::memcpy(tmp,_vs,3*sizeof(MVertex*)); - if (swap) for (int i=0;i<3;i++) _vs[i] = tmp[(7-i-rot)%3]; - else for (int i=0;i<3;i++) _vs[i] = tmp[(3+i-rot)%3]; + if (swap) for (int i=0;i<3;i++) _vs[i] = tmp[(5+rot-i)%3]; + else for (int i=0;i<3;i++) _vs[i] = tmp[(3-rot+i)%3]; } void MTriangleN::reorient(int rot, bool swap) { -- GitLab