00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00020 public class DoubleDip extends UnitFunction1D {
00021
00022 public DoubleDip () {
00023 super();
00024 }
00025
00026 public DoubleDip (double centre, double scale) {
00027 super(centre, scale);
00028 }
00029
00030 public double getValue (double point) {
00031 double depth = 0;
00032 double xs;
00033 double x = (point - centre)/scale;
00034 if (x > -0.5 && x < 0.5) {
00035 xs = 4*x*x;
00036 depth = (-96*xs*xs*xs + 193*xs*xs - 98*xs +1) * scale;
00037 }
00038 return depth;
00039 }
00040
00041 public double twist (double x, double y) {
00042 double dx = 0;
00043 y = y%1;
00044 double ys = y*y;
00045 if (y>0) dx = 4*(ys*ys -2*ys*y + ys);
00046 else dx = 4*(ys*ys +2*ys*y + ys);
00047 return dx;
00048 }
00049
00050 }