本文整理汇总了C++中Punto::getZ方法的典型用法代码示例。如果您正苦于以下问题:C++ Punto::getZ方法的具体用法?C++ Punto::getZ怎么用?C++ Punto::getZ使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Punto
的用法示例。
在下文中一共展示了Punto::getZ方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addNodo
int Nodos::addNodo(Nodo* n) {
Punto p = n->getPunto();
double x = p.getX();
double y = p.getY();
double z = p.getZ();
if(x>maxx) maxx = x;
if(x<minx) minx = x;
if(y>maxy) maxy = y;
if(y<miny) miny = y;
if(z>maxz) maxz = z;
if(z<minz) minz = z;
// Si existe un indice en que haya un punto que fue borrado insertamos el punto ahi.
if(borrados.size() > 0) {
int ind = borrados[0];
nodos[ind] = n;
borrados.erase(borrados.begin());
num_nodos_validos++; // actualizamos el numero de nodos validos
return ind;
}
else {
nodos.push_back(n); // agregamos el punto al contenedor.
num_nodos++; // actualizamos el numero de nodos del contenedor
num_nodos_validos++; // actualizamos el numero de nodos validos
return (nodos.size()-1);
}
}
示例2:
Nodos::Nodos(vector<Nodo*> nds) {
num_nodos = nds.size();
num_nodos_validos = nds.size();
nodos = nds;
double mx = -1*numeric_limits<float>::max();
double mix = numeric_limits<float>::max();
double my = -1*numeric_limits<float>::max();
double miy = numeric_limits<float>::max();
double mz = -1*numeric_limits<float>::max();
double miz = numeric_limits<float>::max();
for(int i = 0; i < (int)nds.size(); ++i){
Nodo* n = nds[i];
if( n!= 0){
Punto p = n->getPunto();
double x = p.getX();
double y = p.getY();
double z = p.getZ();
if(x>mx) mx = x;
if(x<mix) mix = x;
if(y>my) my = y;
if(y<miy) miy = y;
if(z>mz) mz = z;
if(z<miz) miz = z;
}
}
this->maxx = mx;
this->minx = mix;
this->maxy = my;
this->miny = miy;
this->maxz = mz;
this->minz = miz;
nodos_marcados = NULL;
}
示例3: moverNodosSegunParametro
void MovimientosAUV::moverNodosSegunParametro(int indice, double valor, Malla *malla){
int nNodos = malla->getMaxIndiceNodos();
double xs[nNodos +1];
double ys[nNodos +1];
double zs[nNodos +1];
for(int i = 0; i <= nNodos; ++i){
xs[i] = 0.0;
ys[i] = 0.0;
zs[i] = 0.0;
}
for(int i = 0; i < malla->getNodos()->n_marcados; ++i){
Punto *p = this->getMovimiento(i, indice);
int ind = malla->getNodos()->nodos_marcados[i];
xs[ind] = p->getX();
ys[ind] = p->getY();
zs[ind] = p->getZ();
}
for(int i = 0; i <= nNodos; ++i){
Nodo *n = malla->getNodo(i);
int i1 = n->getAsociado1();
int i2 = n->getAsociado2();
int i3 = n->getAsociado3();
if(i1<0 || i2<0 || i3<0)
continue;
float coef1 = n->getCoef1();
float coef2 = n->getCoef2();
float coef3 = n->getCoef3();
float newX = n->getPunto().getX() + coef1*xs[i1]*valor + coef2*xs[i2]*valor + coef3*xs[i3]*valor;
float newY = n->getPunto().getY() + coef1*ys[i1]*valor + coef2*ys[i2]*valor + coef3*ys[i3]*valor;
float newZ = n->getPunto().getZ() + coef1*zs[i1]*valor + coef2*zs[i2]*valor + coef3*zs[i3]*valor;
n->setPunto(Punto(newX, newY, newZ));
}
}
示例4: 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;
}