summaryrefslogtreecommitdiff
path: root/cad/src/experimental/CoNTub/C++/MoleculaB.h
blob: d09abd6720e23f9f49ca59f40bdb60f99299b5d7 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// Copyright 2006-2007 Nanorex, Inc.  See LICENSE file for details. 
#ifndef MOLECULAB_H_INCLUDED
#define MOLECULAB_H_INCLUDED

#include <iostream>
#include "String.h"
#include "TabPe.h"
#include "AtomList.h"

#define MOLDEBUG  0

class MoleculaB
{
    int nselec;
    String info;		//pequeña cadena informativa para pasar un mini titulo
    // small informative string to pass a short title
    double xmin, xmax, ymin, ymax, zmin, zmax;

 public:
    AtomList susatomos;	//de ATOMOS, literally, "his atoms"

    MoleculaB () {
	nselec = 0;
	info = String("");
    }

    void addVert (pto3D punto, int ti);
    void addVert (double x, double y, double z, int ti);
    void addVert (double x, double y, double z, int ti, String e);
    void addVert (pto3D p, int ti, String e);
    double getDim ();
    double getLejania ();
    void vaciar ();
    void deseleccionar ();
    void centrar ();
    void giroxr (double th);
    void giroyr (double th);
    void girozr (double th);
    void giroxg (double th);
    void giroyg (double th);
    void girozg (double th);
    MoleculaB clona ();
    void rm (int n);
    void rmlast (int n);
    void rmlast ();
    int ocupa1 (pto3D pto1);
    int ocupa (pto3D pto1, double limite);
    int ocupa2 (pto3D pto1);
    int atomoqueocupa1 (pto3D pto);
    int atomoqueocupa (pto3D pto, double limite);
    int atomoqueocupa2 (pto3D pto);
    void mueve (int num, double x, double y, double z);
    void mueve (int s, pto3D pto);
    void sustituye (int num, int ti, pto3D pto);
    void ponconec ();
    void ponconec (double param);
    void ponconecsafe ();
    void reconec ();
    void reconec (double param);
    void reconecsafe ();

    //metodo paraeliminar conectividades redundantes, angulos demasiado pequeños (<60, en principio)
    int depuraconec ();

    //metodo paraeliminar conectividades redundantes, angulos demasiado pequeños (<60, en principio);
    void centraentorno (int num);
    void centraentorno ();
    void conecta (int i, int j);
    void conectaA (int i, int j);
    void desconecta (int i, int j);
    double distancia (int a, int b);
    double angulo (int a, int b, int c);
    double dihedro (int a, int b, int c, int d);
    int nvec (int i);
    int nvert ();
    pto3D vert (int i);
    int tipo (int i);
    String etiq (int i);
    String pers (int i);
    double r (int i);
    int selecstatus (int i);
    void selecciona (int i, int status);
    void setInfo (String in);
    String getInfo ();
    void marcaborra (int aborrar);
    void borramarcados ();
    friend std::ostream& operator<< (std::ostream& s, const MoleculaB& a) {
	s << "<MoleculaT " << a.info << ">";
	return s;
    }
};

#endif