本文整理汇总了C++中Nodo::setNormal方法的典型用法代码示例。如果您正苦于以下问题:C++ Nodo::setNormal方法的具体用法?C++ Nodo::setNormal怎么用?C++ Nodo::setNormal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Nodo
的用法示例。
在下文中一共展示了Nodo::setNormal方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generaMallaTriangulos
Malla* GeneraCilindro::generaMallaTriangulos() {
//Genero la medula.
vector<Punto> medula;
medula.push_back(Punto(0,0,0));
medula.push_back(Punto(0,altura,0));
nodos = new Nodos();
Nodo *nodo;
Punto p;
Vect v, v1, v2;
double h,angulo;
h = altura / num_anillos;
angulo = 2*PI / num_puntos;
for(int i=0; i<num_anillos; i++) {
for(int j=0; j<num_puntos; j++) {
p = Punto(cos(j*angulo)*radio,i*h-h/2,sin(j*angulo)*radio);
v1 = Vect(p.getX(),p.getY(),p.getZ());
v2 = Vect(0,i*h-h/2,0);
v = v1 - v2;
nodo = new Nodo(p);
nodo->setNormal(v); //le seteamos su normal
nodo->setConcentracion(0.0); // le seteamos su concentracion
nodos->addNodo(nodo);
}
}
arcos = new Arcos();
caras = new Caras();
int n0, n1, n2, n3;
for(int i=0; i<num_anillos-1; i++) {
for(int j=0; j<num_puntos; j++) {
n0 = num_puntos*i+j;
n1 = num_puntos*i+((j+1)%num_puntos);
n2 = num_puntos*(i+1)+j;
n3 = num_puntos*(i+1)+((j+1)%num_puntos);
if (i%2==0){ //Para que se vayan alternando los arcos.
arcos->addArco(new Arco(n0, n1));
arcos->addArco(new Arco(n0, n2));
arcos->addArco(new Arco(n0, n3));
caras->addCara(new Triangulo(n0,n3,n1));
caras->addCara(new Triangulo(n0,n2,n3));
}
else{
arcos->addArco(new Arco(n0, n1));
arcos->addArco(new Arco(n0, n2));
arcos->addArco(new Arco(n1, n2));
caras->addCara(new Triangulo(n1,n2,n3));
caras->addCara(new Triangulo(n0,n2,n1));
}
if(i==num_anillos-2) //Generamos los arcos del borde superior.
arcos->addArco(new Arco(n2, n3));
}
}
updateVecinos();
Malla *malla = new MallaTriangulos(nodos,arcos,caras);
malla->setMedula(medula);
malla->setConcentracionMax(1.0);
malla->setConcentracionMin(0.0);
assert(malla->checkMalla(true) >= 0);
return malla;
}
示例2: generaMallaCuadrilateros
Malla* GeneraCilindro::generaMallaCuadrilateros() {
//Genero la medula.
vector<Punto> medula;
medula.push_back(Punto(0,0,0));
medula.push_back(Punto(0,altura,0));
int num_nodos = num_anillos * num_puntos;
Nodos *nodos = new Nodos();
Nodo *nodo;
Punto p;
Vect v, v1, v2;
double h,angulo;
h = altura / num_anillos;
angulo = 2*PI / num_puntos;
for(int i=0; i<num_anillos; i++) {
for(int j=0; j<num_puntos; j++) {
p = Punto(cos(j*angulo)*radio,i*h-h/2,sin(j*angulo)*radio);
v1 = Vect(p);
v2 = Vect(0,i*h-h/2,0);
v = v1 - v2;
nodo = new Nodo(p);
nodo->setNormal(v); //le seteamos su normal
nodo->setConcentracion(0.0); // le seteamos su concentracion
nodos->addNodo(nodo);
}
}
Arco *a;
Arcos *arcos = new Arcos();
Cara *c;
Caras *caras = new Caras();
int ind_cara, ind_arco;
int n1, n2, n3, n4;
vector<int> ind_nodos;
vector<int> ind_arcos;
for(int i=0; i<(num_anillos-1); i++) {
for(int j=0; j<num_puntos; j++) {
ind_nodos.clear();
ind_arcos.clear();
// Orden: n1 n2 n3 n4 <-> SE SO NO NE
n1 = int(fmod(num_puntos*i+j,num_nodos));
n4 = int(fmod(num_puntos*(i+1)+j,num_nodos));
if(j == num_puntos-1) {
n2 = n1-num_puntos+1;
n3 = n4-num_puntos+1;
}
else {
n2 = int(fmod(num_puntos*i+j+1,num_nodos));
n3 = int(fmod(num_puntos*(i+1)+j+1,num_nodos));
}
// Orden inverso para tener normal saliente
ind_nodos.push_back(n4);
ind_nodos.push_back(n3);
ind_nodos.push_back(n2);
ind_nodos.push_back(n1);
if(i == num_anillos-2) {
if(j == 0) {
ind_arcos.push_back(2*(n1-1)+3*num_puntos);
}
else {
ind_arcos.push_back(2*n1+j-2);
}
ind_arcos.push_back(2*n1+j);
ind_arcos.push_back(2*n1+j+1);
ind_arcos.push_back(2*(n1+1)+j);
}
else {
if(j == 0) {
ind_arcos.push_back(2*(n1+num_puntos)-1);
}
else {
ind_arcos.push_back(2*n1-1);
}
ind_arcos.push_back(2*n1);
ind_arcos.push_back(2*n1+1);
if(i == num_anillos-3) {
ind_arcos.push_back(2*n1+2*num_puntos+j);
}
else {
ind_arcos.push_back(2*n1+2*num_puntos);
}
}
c = new Cuadrilatero(ind_nodos,ind_arcos);
ind_cara = caras->addCara(c);
nodos->addCaraNodo(n1,ind_cara);
nodos->addCaraNodo(n2,ind_cara);
nodos->addCaraNodo(n3,ind_cara);
nodos->addCaraNodo(n4,ind_cara);
int ind_cara2 = -1;
if(i != 0) {
ind_cara2 = ind_cara-num_puntos;
}
a = new Arco(n1,n2,ind_cara,ind_cara2);
ind_arco = arcos->addArco(a);
//.........这里部分代码省略.........