libmove3d
3.13.0
|
00001 00002 //#include "protein.h" 00003 00004 00005 #define MAX_NINTERVALS 3 00006 00007 typedef struct s_realinterval { 00008 double vmin; 00009 double vmax; 00010 } realinterval; 00011 00012 00013 /********************************************************************** 00014 * Articulated Peptide Chain (APC) structures * 00015 **********************************************************************/ 00016 00017 typedef struct s_apc_atom { 00018 vector4 posrelframe; 00019 struct s_atom *atomPt; 00020 } apc_atom; 00021 00022 00023 typedef struct s_apc_rigid { 00024 // atoms 00025 int natoms; 00026 struct s_apc_atom **atomlist; 00027 // dihedral angle 00028 double qi; 00029 int nintervals; 00030 struct s_realinterval q_interv[MAX_NINTERVALS]; 00031 // frame relative to prev rigid when qi=0 00032 matrix4 pT0; // constant 00033 // frame relative to next rigid when qi=0 00034 matrix4 nT0; // = inv(pT0) , constant 00035 // frame relative to pT0 00036 matrix4 Ti; // Ti is only function of qi (NECESSARY ???) 00037 // frame in abs ref 00038 matrix4 Tabs; 00039 struct s_apc_rigidlistelem *inlist; 00040 } apc_rigid; 00041 00042 00043 typedef struct s_apc_rigidlistelem { 00044 struct s_apc_rigid *rigid; 00045 int nnext; 00046 struct s_apc_rigid **next; 00047 struct s_apc_rigid *prev; 00048 } apc_rigidlistelem; 00049 00050 00051 typedef struct s_apc_backbone { 00052 int nrigids; 00053 struct s_apc_rigidlistelem *firstrigid; 00054 struct s_apc_rigidlistelem *lastrigid; 00055 matrix4 Tbase; 00056 matrix4 Tend; 00057 } apc_backbone; 00058 00059 00060 typedef struct s_apc_sidechain { 00061 int nrigids; 00062 struct s_apc_rigidlistelem *firstrigid; 00063 struct s_apc_rigid *refbkbrigid; 00064 //matrix4 Tbase; 00065 } apc_sidechain; 00066 00067 00068 typedef struct s_apc { 00069 struct s_apc_backbone *backbone; 00070 int nsidechains; 00071 struct s_apc_sidechain **sidechains; 00072 } apc; 00073