/** * $Id: mxDistanceCostFunction.java,v 1.2 2012/11/21 14:16:01 mate Exp $ * Copyright (c) 2007-2009, JGraph Ltd */ package com.mxgraph.analysis; import com.mxgraph.util.mxPoint; import com.mxgraph.view.mxCellState; /** * Implements a cost function for the Euclidean length of an edge. */ public class mxDistanceCostFunction implements mxICostFunction { /** * Returns the Euclidean length of the edge defined by the absolute * points in the given state or 0 if no points are defined. */ public double getCost(mxCellState state) { double cost = 0; int pointCount = state.getAbsolutePointCount(); if (pointCount > 0) { mxPoint last = state.getAbsolutePoint(0); for (int i = 1; i < pointCount; i++) { mxPoint point = state.getAbsolutePoint(i); cost += point.getPoint().distance(last.getPoint()); last = point; } } return cost; } }