content: package edu.stanford.rsl.conrad.geometry.motion.timewarp;
  
  import edu.stanford.rsl.conrad.utils.VisualizationUtil;
  import edu.stanford.rsl.jpop.utils.UserUtil;
  
  
  
  /**
   * Implements an accelerated/deaccelerated time warping. At time = 0.5 the maximal acceleration is achieved.
   * 
   * @author Chris Schwemmer
   *
   */
  public class SigmoidTimeWarper extends TimeWarper {
  
  	/**
  	 * 
  	 */
  	private static final long serialVersionUID = -5822332120091846823L;
  	private double acc = 4.0;
  
  	@Override
  	public double warpTime(double time) {
  		//if (time == 0.0)
  		//	return 0.0;
  		//else if (time == 1.0)
  		//	return 1.0;
  		//else
  			return  1.0 / (1 + Math.exp(-2.0 * acc * time + acc));
  	}
  	
  	public void setAcc(double accFac) {
  		acc = accFac;
  	}
  	
  	public double getAcc() {
  		return acc;
  	}
  
  	public static void main (String [] args) throws Exception{
  		SigmoidTimeWarper warp = new SigmoidTimeWarper();
  		double accFac = UserUtil.queryDouble("Acceleration factor", 4);
  		warp.setAcc(accFac);
  		double [] values = new double [100];
  		for (int i =0; i< 100; i++){
  			values[i] = warp.warpTime(((double)i)/100);
  		}
  		VisualizationUtil.createPlot(values).show();
  	}
  	
  }
  /*
   * Copyright (C) 2010-2014 Chris Schwemmer
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */