summaryrefslogtreecommitdiff
path: root/cad/src/experimental/CoNTub/C++/MoleculaT.h
blob: d5f6393e567077ff5b0f1de5c667d4e6eb4759c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Copyright 2006-2007 Nanorex, Inc.  See LICENSE file for details. 
#ifndef MOLECULAT_H_INCLUDED
#define MOLECULAT_H_INCLUDED

#include <iostream>
#include "MoleculaB.h"
#include "pto3D.h"

class anillo;   // avoid circular definition, do not include "anillo.h"

class MoleculaT: public MoleculaB
{
    double R1, R2;
    int std;	//dice si esta definido el segundo tubo

 public:
    pto3D TEST1;		//fin del tubo, vc que conecta fin de T1 y principio T2,eje del T2
    pto3D TESTC;
    pto3D TEST2;

    MoleculaT () {
	TEST1 = pto3D ();
	TEST2 = pto3D ();
	TESTC = pto3D ();
	R1 = 0;
	R2 = 0;
	std = 0;
    }

    MoleculaT clonaT ();
    // proyecta --> literally, "it projects": something to do with projections
    void proyecta (MoleculaT maux);
    void proyecta (int i);
    // THIS AUTHORIZES US TO ELIMINATE THE MAUX USE
    pto3D proyecta (pto3D psus);	//ESTO NOS AUTORIZA PARA ELIMINAR EL USO DE MAUX
    void proyecta (int sus, MoleculaT maux);
    //los puntos auxiliares se ponen en la molecula auxiliar, pa que no incordien
    // the auxiliary points are put in the auxiliary molecule, pa that do not incordien
    pto3D proyecta (pto3D sustituido, MoleculaT maux);
    void centraentorno (int num);	//ESTA REPE??
    void centraentorno ();   // literally, "it centers surroundings"
    // Terminate any unfinished hexagons at the end of a nanotube with hydrogens.
    void cierraH ();  // cierra --> it closes, H -> hydrogen
    // Terminate any unfinished hexagons at the end of a nanotube with nitrogens.
    void cierraN ();  // cierra --> it closes, N -> nitrogen
    int remataconec ();	//METODO A usar solo con estructuras grafiticas
    void remataconec2 ();	//Metodo alternatiov, que revisa todos los atomos con
    //ESTA ES LA AARIABLE EMTRE = Y ! QUE DICE SI EL ALGORITMO ES
    // TOTALMENTE RELAJADO (1)(SIGUIENDO PARAMETROS DE VECINO)
    // o estricto (0) (SIGUENDO conectividad TRIGONAL)
    String MoleculaT::exploraanillo (int atocentro);
    //OJO, esta distancia media no incluye el enlace priemro, ani[1],ani[2], porque es el que va a ser sustituido
    double dmedia (anillo ani);
    std::ostream& mmp (std::ostream& ost, int index);
    std::ostream& mmp (std::ostream& ost, String inf, int index);
};

#endif