72 std::vector<std::vector<int>> rings,
double sheetArea) {
74 double areaXY, areaXZ, areaYZ;
75 std::vector<double> singleAreas;
84 for (
int iring = 0; iring < rings.size(); iring++) {
88 areaXY += singleAreas[0];
89 areaXZ += singleAreas[1];
90 areaYZ += singleAreas[2];
94 areaXY = areaXY / sheetArea * 100.0;
95 areaXZ = areaXZ / sheetArea * 100.0;
96 areaYZ = areaYZ / sheetArea * 100.0;
98 return {areaXY, areaXZ, areaYZ};
107 std::vector<int>
ring) {
109 int iatomIndex, jatomIndex;
110 int ringSize =
ring.size();
111 double areaXY, areaXZ, areaYZ;
112 double x_iatom, y_iatom, z_iatom;
113 double x_jatom, y_jatom, z_jatom;
122 jatomIndex =
ring[0];
125 for (
int k = 1; k < ringSize; k++) {
126 iatomIndex =
ring[k];
131 &z_iatom, &x_jatom, &y_jatom, &z_jatom);
137 areaXY += (x_jatom + x_iatom) * (y_jatom - y_iatom);
140 areaXZ += (x_jatom + x_iatom) * (z_jatom - z_iatom);
143 areaYZ += (y_jatom + y_iatom) * (z_jatom - z_iatom);
145 jatomIndex = iatomIndex;
149 iatomIndex =
ring[0];
152 &z_iatom, &x_jatom, &y_jatom, &z_jatom);
155 areaXY += (x_jatom + x_iatom) * (y_jatom - y_iatom);
158 areaXZ += (x_jatom + x_iatom) * (z_jatom - z_iatom);
161 areaYZ += (y_jatom + y_iatom) * (z_jatom - z_iatom);
169 areaXY = fabs(areaXY);
170 areaXZ = fabs(areaXZ);
171 areaYZ = fabs(areaYZ);
173 return {areaXY, areaYZ, areaXZ};
int unwrappedCoordShift(molSys::PointCloud< molSys::Point< double >, double > *yCloud, int iatomIndex, int jatomIndex, double *x_i, double *y_i, double *z_i, double *x_j, double *y_j, double *z_j)
Shift particles (unwrapped coordinates)
std::vector< double > projAreaSingleRing(molSys::PointCloud< molSys::Point< double >, double > *yCloud, std::vector< int > ring)
Calculates the projected area on the XY, YZ and XZ planes.