Search in sources :

Example 1 with Point2D

use of org.vcell.util.geometry2d.Point2D in project vcell by virtualcell.

the class NailShapeEnergyFunction method getEnergy.

public double getEnergy(List<Point2D> ps) {
    if (ps.size() < 2) {
        throw EnergySum.Default.getWrongNUmberOfParametersException(getNumberOfParameters(), ps.size());
    }
    Point2D p0 = ps.get(0);
    Point2D p1 = ps.get(1);
    double dx = p1.x - p0.x;
    double dy = p1.y - p0.y;
    double rSquared = dx * dx + dy * dy;
    return rSquared < rMaxSquared ? k * (rMaxSquared / rSquared - 1.0) : 0.0;
}
Also used : Point2D(org.vcell.util.geometry2d.Point2D)

Example 2 with Point2D

use of org.vcell.util.geometry2d.Point2D in project vcell by virtualcell.

the class NailShapeEnergyFunction method getForce.

public Vector2D getForce(List<Point2D> ps, int index) {
    if (ps.size() < 2) {
        throw EnergySum.Default.getWrongNUmberOfParametersException(getNumberOfParameters(), ps.size());
    }
    Point2D p0 = ps.get(0);
    Point2D p1 = ps.get(1);
    double dx = 0.0, dy = 0.0;
    switch(index) {
        case 0:
            {
                dx = p1.x - p0.x;
                dy = p1.y - p0.y;
                double r = Math.sqrt(dx * dx + dy * dy);
                double r3 = r * r * r;
                return new Vector2D(k * dx / r3, k * dy / r3);
            }
        case 1:
            {
                dx = p0.x - p1.x;
                dy = p0.y - p1.y;
            }
    }
    double rSquared = dx * dx + dy * dy;
    if (rSquared < rMaxSquared) {
        double factor = 2 * k * rMaxSquared / (rSquared * rSquared);
        return new Vector2D(factor * dx, factor * dy);
    } else {
        return new Vector2D();
    }
}
Also used : Vector2D(org.vcell.util.geometry2d.Vector2D) Point2D(org.vcell.util.geometry2d.Point2D)

Example 3 with Point2D

use of org.vcell.util.geometry2d.Point2D in project vcell by virtualcell.

the class CoulombEnergyFunction method getEnergy.

public double getEnergy(List<Point2D> ps) {
    if (ps.size() < 2) {
        throw EnergySum.Default.getWrongNUmberOfParametersException(getNumberOfParameters(), ps.size());
    }
    Point2D p0 = ps.get(0);
    Point2D p1 = ps.get(1);
    double dx = p1.x - p0.x;
    double dy = p1.y - p0.y;
    double r = Math.sqrt(dx * dx + dy * dy);
    return k / r;
}
Also used : Point2D(org.vcell.util.geometry2d.Point2D)

Example 4 with Point2D

use of org.vcell.util.geometry2d.Point2D in project vcell by virtualcell.

the class ParabularEnergyFunction method getEnergy.

public double getEnergy(List<Point2D> ps) {
    if (ps.size() < 2) {
        throw EnergySum.Default.getWrongNUmberOfParametersException(getNumberOfParameters(), ps.size());
    }
    Point2D p0 = ps.get(0);
    Point2D p1 = ps.get(1);
    double dx = p1.x - p0.x;
    double dy = p1.y - p0.y;
    return k * (dx * dx + dy * dy);
}
Also used : Point2D(org.vcell.util.geometry2d.Point2D)

Aggregations

Point2D (org.vcell.util.geometry2d.Point2D)4 Vector2D (org.vcell.util.geometry2d.Vector2D)1