17#ifndef _RBTBASEGRID_H_
18#define _RBTBASEGRID_H_
20#include "rxdock/Config.h"
21#include "rxdock/Coord.h"
30 static const std::string _CT;
36 unsigned int NY,
unsigned int NZ,
unsigned int NPad = 0);
45 friend std::ostream &operator<<(std::ostream &s,
const BaseGrid &grid);
46 friend void to_json(json &j,
const BaseGrid &grid);
47 friend void from_json(
const json &j,
BaseGrid &grid);
55 virtual void Print(std::ostream &ostr)
const;
65 unsigned int GetNX()
const {
return m_NX; }
66 unsigned int GetNY()
const {
return m_NY; }
67 unsigned int GetNZ()
const {
return m_NZ; }
68 unsigned int GetN()
const {
return m_N; }
69 unsigned int GetStrideX()
const {
return m_SX; }
70 unsigned int GetStrideY()
const {
return m_SY; }
71 unsigned int GetStrideZ()
const {
return m_SZ; }
72 int GetnXMin()
const {
return m_nXMin; }
73 int GetnYMin()
const {
return m_nYMin; }
74 int GetnZMin()
const {
return m_nZMin; }
75 int GetnXMax()
const {
return m_nXMax; }
76 int GetnYMax()
const {
return m_nYMax; }
77 int GetnZMax()
const {
return m_nZMax; }
79 const Coord &GetGridMin()
const {
return m_min; }
80 const Coord &GetGridMax()
const {
return m_max; }
81 const Vector &GetGridStep()
const {
return m_step; }
82 Coord GetGridCenter()
const {
return (GetGridMax() + GetGridMin()) / 2.0; }
83 Coord GetGridSize()
const {
return GetGridMax() - GetGridMin(); }
84 unsigned int GetPad()
const {
return m_NPad; }
85 const Coord &GetPadMin()
const {
return m_padMin; }
86 const Coord &GetPadMax()
const {
return m_padMax; }
93 void SetGridMin(
const Coord &gridMin);
95 void TranslateGrid(
const Vector &vec) { SetGridMin(GetGridMin() + vec); }
97 void SetGridCenter(
const Coord &gridCenter) {
98 TranslateGrid(gridCenter - GetGridCenter());
101 void SetGridStep(
const Vector &gridStep);
103 void SetPad(
unsigned int NPad = 0);
110 bool isValid(
const Coord &c)
const {
111 return (c >= m_padMin) && (c < m_padMax);
114 bool isValid(
unsigned int iX,
unsigned int iY,
unsigned int iZ)
const {
115 return (iX >= m_NPad) && (iX < m_NX - m_NPad) && (iY >= m_NPad) &&
116 (iY < m_NY - m_NPad) && (iZ >= m_NPad) && (iZ < m_NZ - m_NPad);
119 bool isValid(
unsigned int iXYZ)
const {
return (iXYZ < m_N); }
122 unsigned int GetIX(
const Coord &c)
const {
123 return static_cast<unsigned int>((c.xyz(0) - m_min.xyz(0)) / m_step.xyz(0));
125 unsigned int GetIY(
const Coord &c)
const {
126 return static_cast<unsigned int>((c.xyz(1) - m_min.xyz(1)) / m_step.xyz(1));
128 unsigned int GetIZ(
const Coord &c)
const {
129 return static_cast<unsigned int>((c.xyz(2) - m_min.xyz(2)) / m_step.xyz(2));
133 unsigned int GetIX(
double x)
const {
134 return static_cast<unsigned int>((x - m_min.xyz(0)) / m_step.xyz(0));
136 unsigned int GetIY(
double y)
const {
137 return static_cast<unsigned int>((y - m_min.xyz(1)) / m_step.xyz(1));
139 unsigned int GetIZ(
double z)
const {
140 return static_cast<unsigned int>((z - m_min.xyz(2)) / m_step.xyz(2));
144 unsigned int GetIX(
unsigned int iXYZ)
const {
return iXYZ / m_SX; }
145 unsigned int GetIY(
unsigned int iXYZ)
const {
return (iXYZ % m_SX) / m_SY; }
146 unsigned int GetIZ(
unsigned int iXYZ)
const {
return (iXYZ % m_SY) / m_SZ; }
149 unsigned int GetIXYZ(
unsigned int iX,
unsigned int iY,
150 unsigned int iZ)
const {
151 return iX * m_SX + iY * m_SY + iZ * m_SZ;
154 unsigned int GetIXYZ(
const Coord &c)
const {
155 return GetIXYZ(GetIX(c), GetIY(c), GetIZ(c));
159 Coord GetCoord(
unsigned int iX,
unsigned int iY,
unsigned int iZ)
const {
160 return (
Coord(m_nXMin, m_nYMin, m_nZMin) +
Coord(iX, iY, iZ)) * m_step;
163 double GetXCoord(
unsigned int iX)
const {
164 return (m_nXMin +
static_cast<int>(iX)) * m_step.xyz(0);
167 double GetYCoord(
unsigned int iY)
const {
168 return (m_nYMin +
static_cast<int>(iY)) * m_step.xyz(1);
171 double GetZCoord(
unsigned int iZ)
const {
172 return (m_nZMin +
static_cast<int>(iZ)) * m_step.xyz(2);
176 Coord GetCoord(
unsigned int iXYZ)
const {
177 return GetCoord(GetIX(iXYZ), GetIY(iXYZ), GetIZ(iXYZ));
180 CoordList GetCoordList(
const std::set<unsigned int> &iXYZSet)
const;
185 void GetSphereIndices(
const Coord &c,
double radius,
186 std::vector<unsigned int> &sIndices)
const;
194 void OwnPrint(std::ostream &ostr)
const;
243void to_json(json &j,
const BaseGrid &grid);
244void from_json(
const json &j,
BaseGrid &grid);
Definition SmartPointer.h:48