FormFittingToolboxConsole

by Micha ⌂, Bad Vilbel, Monday, January 21, 2019, 07:58 (1921 days ago) @ ColinT

Hello Colin,

It currently uses ELLIPSE3D, CIRCULARCYLINDER, CYLINDER, CIRCLE3D only. (with my version).

I found the source code of this console version and extend the argument list by the keyword PLANE, see code below.

Please download the modified version and check it out:

https://dev.applied-geodesy.org/tmp/FormFittingToolboxConsole.jar

Let my know, if/how it works.

regards
Micha

 /**********************************************************************
 *                     FormFittingToolboxConsole                        *
 ************************************************************************
 * Copyright (C) by Michael Loesler, http//derletztekick.com            *
 *                                                                      *
 * This program is free software; you can redistribute it and/or modify *
 * it under the terms of the GNU General Public License as published by *
 * the Free Software Foundation; either version 3 of the License, or    *
 * (at your option) any later version.                                  *
 *                                                                      *
 * This program is distributed in the hope that it will be useful,      *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
 * GNU General Public License for more details.                         *
 *                                                                      *
 * You should have received a copy of the GNU General Public License    *
 * along with this program; if not, see <http://www.gnu.org/licenses/>  *
 * or write to the                                                      *
 * Free Software Foundation, Inc.,                                      *
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.            *
 *                                                                      *
 **********************************************************************/
 
package com.derletztekick.geodesy.formFittingToolbox.v2.console;
 
import java.io.File;
import java.util.Locale;
 
import com.derletztekick.geodesy.formFittingToolbox.v2.form.Form;
import com.derletztekick.geodesy.formFittingToolbox.v2.form.form3d.Circle3D;
import com.derletztekick.geodesy.formFittingToolbox.v2.form.form3d.CircularCylinder;
import com.derletztekick.geodesy.formFittingToolbox.v2.form.form3d.Cylinder;
import com.derletztekick.geodesy.formFittingToolbox.v2.form.form3d.Ellipse3D;
import com.derletztekick.geodesy.formFittingToolbox.v2.form.form3d.Plane;
import com.derletztekick.geodesy.formFittingToolbox.v2.gui.FormManager;
import com.derletztekick.geodesy.formFittingToolbox.v2.io.PointFileReader;
 
public class FormFittingToolboxConsole {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
  System.setProperty("com.github.fommil.netlib.BLAS", "com.github.fommil.netlib.F2jBLAS");
  System.setProperty("com.github.fommil.netlib.LAPACK", "com.github.fommil.netlib.F2jLAPACK");
  System.setProperty("com.github.fommil.netlib.ARPACK", "com.github.fommil.netlib.F2jARPACK");
 
  int dim = 3;
  double levmar = 0;
 
  String formType = args[0];
  try {levmar = Double.parseDouble(args[1]);} catch(NumberFormatException nfe) {nfe.printStackTrace();}
  File pointFile  = new File(args[2]);
  File exportFile = new File(args[3]);
 
  FormManager formManager = new FormManager(null, Locale.getDefault());
  formManager.setDimension(dim);
  formManager.setLevMarDampingValue(Math.abs(levmar));
  formManager.adjustUnknownParametersOnly(true);
 
  // ELLIPSE3D/CIRCULARCYLINDER/CYLINDER/CIRCLE3D/PLANE
  if (formType.equalsIgnoreCase("ELLIPSE3D"))
   formManager.setFormClass(Ellipse3D.class);
  else if (formType.equalsIgnoreCase("CYLINDER"))
   formManager.setFormClass(Cylinder.class);
  else if (formType.equalsIgnoreCase("CIRCULARCYLINDER"))
   formManager.setFormClass(CircularCylinder.class);
  else if (formType.equalsIgnoreCase("CIRCLE3D"))
   formManager.setFormClass(Circle3D.class);
  else if (formType.equalsIgnoreCase("PLANE"))
   formManager.setFormClass(Plane.class);
  else {
   System.err.println("Error, unknwon surface type: " + formType);
   return;
  }
 
  PointFileReader reader = new PointFileReader(pointFile, dim);
  reader.ignoreLinesWhichStartWith("#");
  int status = -1;
  if (reader.readSourceFile()) {
   formManager.setPointGroup(reader.getPoints());
   Form form = formManager.createForm();
   status = form.estimateModel();
  }
 
  if (status == 1) {
   formManager.exportFormParametersToFile(exportFile);
   System.out.println("\n\nEstimation successfully finished!");
  }
  else {
   System.err.println("Estimation failed!");
   return;
  }
 }
 
}

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
console, form fitting, form analysis, ellipse 3d, circular cylinder, circle 3d, plane

locked
2387 views

Complete thread:

 RSS Feed of thread