Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/arranger/jarl/util/InterpolateUtil.java


1   package com.arranger.jarl.util;
2   
3   import com.arranger.jarl.base.ITimedJarlObject;
4   import com.arranger.jarl.base.Time;
5   
6   import java.awt.geom.Point2D;
7   import java.util.ArrayList;
8   
9   /**
10   * InterpolateUtil created on Feb 21, 2003
11   */
12  public class InterpolateUtil {
13  
14      public static InterpolationPair[] createSegmentPairs(Point2D[] points) {
15          java.util.List pairs = new ArrayList();
16  
17          for (int index = 0; index < points.length - 1; index++) {
18              Point2D point1 = points[index];
19              Point2D point2 = points[index + 1];
20              InterpolationPair segmentPair = new InterpolationPair(
21                      new InterpolationPair.Segment(point1.getX(), point1.getY()),
22                      new InterpolationPair.Segment(point2.getX(), point2.getY())
23              );
24              pairs.add(segmentPair);
25          }
26  
27          InterpolationPair[] results = new InterpolationPair[pairs.size()];
28          return (InterpolationPair[]) pairs.toArray(results);
29      }
30  
31      public static InterpolationPair getSegment(double x, InterpolationPair[] segmentPairs) {
32          for (int index = 0; index < segmentPairs.length; index++) {
33              InterpolationPair interpolationPair = segmentPairs[index];
34              if (interpolationPair.checkRange(x) == 0) {
35                  return interpolationPair;
36              }
37          }
38          return segmentPairs[segmentPairs.length - 1];
39      }
40  
41      /**
42       * Get the pct into rendering this timedObj
43       * @param timedObj
44       * @param currentTime
45       * @return the current pct in rendering this timedObj
46       */
47      public static double interpolate(ITimedJarlObject timedObj, Time currentTime) {
48          return  (double)WidgetUtil.getRelativeTime(timedObj, currentTime).getFrame() /
49                  (double)(timedObj.getEndTime().getFrame() - timedObj.getStartTime().getFrame());
50      }
51  
52      /**
53       * Based on the current time interpolate
54       *
55       * @param startTime
56       * @param endTime
57       * @param startValue
58       * @param endValue
59       * @param currentTime
60       */
61      public static double interpolate(Time startTime,
62                                       Time endTime,
63                                       double startValue,
64                                       double endValue,
65                                       Time currentTime) {
66          InterpolationPair segmentPair = new InterpolationPair(
67              new InterpolationPair.Segment(startTime.getFrame(), startValue),
68              new InterpolationPair.Segment(endTime.getFrame(), endValue)
69          );
70  
71          return segmentPair.getYValue(currentTime.getFrame());
72      }
73  
74      /**
75       *
76       * @param x1
77       * @param x2
78       * @param y1
79       * @param y2
80       * @param currentX
81       */
82      public static double interpolate(double x1, double x2, double y1, double y2, double currentX) {
83          InterpolationPair segmentPair = new InterpolationPair(
84              new InterpolationPair.Segment(x1, y1),
85              new InterpolationPair.Segment(x2, y2)
86          );
87  
88          return segmentPair.getYValue(currentX);
89      }
90  }