/****************************************************************/ /* cs4496/7496: Computer Animation, Instructor: Jarek Rossignac */ /* Project P4: Morph */ /* */ /* Solution by */ /* Florian Hecht */ /* */ /* November 2006 */ /****************************************************************/ /* functions to load and store the twists and translations that define a morph */ void saveTwists(String filename) { int c = twists.size(); String[] ss = new String[c*6]; for (int i = 0; i < c; i++) { Twist tw = (Twist)twists.get(i); ss[6*i + 0] = tw.A.toString2D(); ss[6*i + 1] = tw.B.toString2D(); ss[6*i + 2] = tw.aDir.toString2D(); ss[6*i + 3] = tw.bDir.toString2D(); ss[6*i + 4] = tw.sigmaVec.toString2D(); ss[6*i + 5] = Boolean.toString(tw.simpleTrans); } saveStrings(filename, ss); } void loadTwists(String filename) { String[] ss = loadStrings(filename); int c = ss.length / 6; pt A = new pt(0, 0, 0), B = new pt(0, 0, 0); vec aDir = new vec(0, 0, 0), bDir = new vec(0, 0, 0); vec sigma = new vec(0, 0, 0); twists.clear(); for (int i = 0; i < c; i++) { A.fromString2D(ss[6*i + 0]); B.fromString2D(ss[6*i + 1]); aDir.fromString2D(ss[6*i + 2]); bDir.fromString2D(ss[6*i + 3]); sigma.fromString2D(ss[6*i + 4]); boolean simple = boolean(ss[6*i + 5]); Twist tw = new Twist(); tw.createTwist(A, aDir, B, bDir); tw.sigmaVec = sigma.make(); tw.simpleTrans = simple; twists.add(tw); } }