package edu.stanford.rsl.conrad.geometry.splines; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.ArrayList; import edu.stanford.rsl.conrad.geometry.shapes.simple.PointND; import edu.stanford.rsl.conrad.utils.FileUtil; import edu.stanford.rsl.conrad.utils.VisualizationUtil; public class SplineTests { public static BSpline createTestSpline(){ double [] uVector = {0, 0, 0, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1, 1, 1}; ArrayList<PointND> list = new ArrayList<PointND>(); list.add(new PointND (0, 0, 1)); list.add(new PointND (1, 0, 2)); list.add(new PointND (1, 0.75, 4)); list.add(new PointND (2, 1, -1)); list.add(new PointND (2, 0, 2)); list.add(new PointND (2, 0.75, 4)); list.add(new PointND (3, 1, -1)); list.add(new PointND (3, 0, 2)); list.add(new PointND (4, 1, -1)); list.add(new PointND (4, 2, -1)); list.add(new PointND (4, 0, 2)); list.add(new PointND (5, 0.75, 4)); list.add(new PointND (6, 1, -1)); return new BSpline(list, uVector); } public static SurfaceBSpline createTestSurfaceSpline(){ double [] uVector = {0, 0, 0, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1, 1, 1}; double [] vVector = {0, 0, 0, 0, 0.2, 0.4, 0.6, 0.8, 1, 1, 1, 1}; ArrayList<PointND> list = new ArrayList<PointND>(); list.add(new PointND (0, 0, 1)); list.add(new PointND (1, 0, 2)); list.add(new PointND (1, 0.75, 4)); list.add(new PointND (2, 1, -1)); list.add(new PointND (2, 0, 2)); list.add(new PointND (2, 0.75, 4)); list.add(new PointND (3, 1, -1)); list.add(new PointND (3, 0, 2)); list.add(new PointND (4, 1, -1)); list.add(new PointND (4, 2, -1)); list.add(new PointND (4, 0, 2)); list.add(new PointND (5, 0.75, 4)); list.add(new PointND (6, 1, -1)); int i =1; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); i =3; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); i =5; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); i =9; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); i =11; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); i =12; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); i =13; list.add(new PointND (0, 0+i, 1)); list.add(new PointND (1, 0+i, 2)); list.add(new PointND (1, 0.75+i, 4)); list.add(new PointND (2, 1+i, -1)); list.add(new PointND (2, 0+i, 2)); list.add(new PointND (2, 0.75+i, 4)); list.add(new PointND (3, 1+i, -1)); list.add(new PointND (3, 0+i, 2)); list.add(new PointND (4, 1+i, -1)); list.add(new PointND (4, 2+i, -1)); list.add(new PointND (4, 0+i, 2)); list.add(new PointND (5, 0.75+i, 4)); list.add(new PointND (6, 1+i, -1)); return new SurfaceBSpline("TestSpline", list, uVector, vVector); } /** * @param args */ public static void main(String[] args) { // simple cubic spline BSpline spline = createTestSpline(); UniformCubicBSpline cspline = new UniformCubicBSpline(spline.getControlPoints(), spline.getKnots()); VisualizationUtil.createSplinePlot(spline).show(); VisualizationUtil.createSplinePlot(cspline).show(); FileReader file; try { file = new FileReader(FileUtil.myFileChoose(".nrb", false)); SurfaceBSpline.readBSpline(new BufferedReader(file)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /* * Copyright (C) 2010-2014 Andreas Maier * CONRAD is developed as an Open Source project under the GNU General Public License (GPL). */