summaryrefslogtreecommitdiff
path: root/cad/plugins/CoNTub/src/Minimol.h
blob: ec911ee1ea7932fac35f25afce34df90e5a46960 (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
// Copyright 2006-2007 Nanorex, Inc.  See LICENSE file for details. 
/* $Id$ */

#ifndef MINIMOL_H_INCLUDED
#define MINIMOL_H_INCLUDED

#include "pto3D.h"
#include "String.h"
#include "MoleculaB.h"

class Minimol
{
    String *minietiqs;
    String *miniperss;
    float *minisizes;
    int *miniselec;
    double xmin, xmax, ymin, ymax, zmin, zmax;

public:
    int nvert;
    pto3D *miniverts;
    int **miniconec;

    Minimol (int nv)
    {
	nvert = nv;
	miniverts = new pto3D[nvert];
	minietiqs = new String[nvert];
	miniperss = new String[nvert];
	minisizes = new float[nvert];
	miniselec = new int[nvert];
	miniconec = new int*[nvert];
	for (int i = 0; i < nvert; i++) {
	    miniconec[i] = new int[10];
	}
    }


    Minimol (MoleculaB mo)
    {
	//Creacion de una minimolecula rapida para manipulacion dentro de un visor 3D
	//A partir de una molecula compleja tipo MoleculaB
	nvert = mo.susatomos.size ();
	miniverts = new pto3D[nvert];
	minietiqs = new String[nvert];
	miniperss = new String[nvert];
	minisizes = new float[nvert];
	miniselec = new int[nvert];
	miniconec = new int*[nvert];
	for (int i = 0; i < nvert; i++) {
	    miniconec[i] = new int[10];
	    Atomo *at = mo.susatomos.get(i);
	    miniverts[i] = pto3D (at->vert.x, at->vert.y, at->vert.z);
	    minietiqs[i] = at->etiq;
	    miniperss[i] = at->pers;
	    minisizes[i] = (float) at->r;
	    miniselec[i] = 0;
	    for (int j = 0; j < 10; j++)
		miniconec[i][j] = at->mconec[j];
	}
    }


    void vaciar ();
    void girox (double th);
    void giroy (double th);
    void giroz (double th);
    double getDim ();
    double distancia (int a, int b);
    double angulo (int a, int b, int c);	//OJO EN GRADOS;
    double dihedro (int a, int b, int c, int d);
    int selecstatus (int i);
    void selecciona (int i, int status);
    void deselecciona ();
    Minimol clona ();
    double getLejania ();
};

#endif