/* * Copyright (C) 2011-2015, Peter Abeles. All Rights Reserved. * * This file is part of Geometric Regression Library (GeoRegression). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package georegression.fitting.ellipse; import georegression.PerformerBase; import georegression.ProfileOperation; import georegression.struct.point.Point2D_F64; import georegression.struct.shapes.EllipseRotated_F64; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * @author Peter Abeles */ public class BenchmarkClosestPointEllipse { long TIME = 1000; Random rand = new Random(234); List<EllipseRotated_F64> ellipses = new ArrayList<EllipseRotated_F64>(); Point2D_F64 where = new Point2D_F64(1,3); public class Angle extends PerformerBase { ClosestPointEllipseAngle_F64 alg = new ClosestPointEllipseAngle_F64(1e-8,100); @Override public void process() { for( int i = 0; i < ellipses.size(); i++ ){ alg.setEllipse(ellipses.get(i)); alg.process(where); } } } public void process() { for( int i = 0; i < 100; i++ ) { EllipseRotated_F64 ellipse = new EllipseRotated_F64(); ellipse.center.x = (rand.nextDouble()-0.5)*5; ellipse.center.y = (rand.nextDouble()-0.5)*5; ellipse.b = rand.nextDouble()*4+0.1; ellipse.a = ellipse.b + rand.nextDouble()*2; ellipse.phi = (rand.nextDouble()-0.5)*Math.PI; ellipses.add(ellipse); } ProfileOperation.printOpsPerSec(new Angle(),TIME); } public static void main( String args[] ) { BenchmarkClosestPointEllipse closest = new BenchmarkClosestPointEllipse(); closest.process(); } }