com.actelion.research.chem.coords.FragmentAssociation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of openchemlib Show documentation
Show all versions of openchemlib Show documentation
Open Source Chemistry Library
package com.actelion.research.chem.coords;
/**
* Created by thomas on 9/23/16.
*/
public class FragmentAssociation {
private InventorFragment[] mFragment;
private double[] mX,mY;
private int[] mCount;
public FragmentAssociation(InventorFragment f1, InventorFragment f2, int atomIndex1, int atomIndex2) {
mFragment = new InventorFragment[2];
mFragment[0] = f1;
mFragment[1] = f2;
mX = new double[2];
mY = new double[2];
mX[0] = mFragment[0].getAtomX(atomIndex1);
mY[0] = mFragment[0].getAtomY(atomIndex1);
mX[1] = mFragment[1].getAtomX(atomIndex2);
mY[1] = mFragment[1].getAtomY(atomIndex2);
mCount = new int[2];
mCount[0] = 1;
mCount[1] = 1;
}
/**
* Uses center of gravity of the fragments as anchor points
* @param f1
* @param f2
*/
public FragmentAssociation(InventorFragment f1, InventorFragment f2) {
mFragment = new InventorFragment[2];
mFragment[0] = f1;
mFragment[1] = f2;
mX = new double[2];
mY = new double[2];
mCount = new int[2];
for (int i=0; i<2; i++) {
for (int j=0; j mFragment[1].mAtomY[i])
yMin = mFragment[1].mAtomY[i];
if (yMax < mFragment[1].mAtomY[i])
yMax = mFragment[1].mAtomY[i];
}
double range = yMax - yMin + 2*minDistance;
int binCount = (int)Math.ceil(range);
yMin += (range - binCount) / 2 - minDistance;
double[] leftX = new double[binCount];
for (int i=0; i mFragment[1].mAtomX[i])
leftX[j] = mFragment[1].mAtomX[i];
}
}
for (int i=0; i= 0 && index < leftX.length
&& dx < mFragment[0].mAtomX[i] - leftX[index])
dx = mFragment[0].mAtomX[i] - leftX[index];
}
for (int i=0; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy