package de.fub.agg2graph.gpseval.features; import de.fub.agg2graph.gpseval.data.Waypoint; /** * * */ public class MaxAccelerationFeature extends Feature { private int mLastSegment = 0; private Waypoint mLastWaypoint; private double mMaxAcc = 0; @Override public void addWaypoint(Waypoint entry) { // If segment has changed, use current waypoint as new "start"-waypoint // for following calculations. if (entry.getSegment() != mLastSegment) { mLastWaypoint = null; mLastSegment = entry.getSegment(); } if (mLastWaypoint != null && entry.getTimestamp() != null && mLastWaypoint.getTimestamp() != null) { double timeDiff = ((double) (entry.getTimestamp().getTime() - mLastWaypoint.getTimestamp().getTime())) / 1000; double speedDiff = entry.getSpeed() - mLastWaypoint.getSpeed(); if (timeDiff > 0) { double acc = speedDiff / timeDiff; if (acc > mMaxAcc) { mMaxAcc = acc; } } } mLastWaypoint = entry; } @Override public double getResult() { return mMaxAcc; } @Override public void reset() { mLastWaypoint = null; mMaxAcc = 0; } }