26#if defined (HAVE_CONFIG_H)
40inline double max (
double a,
double b,
double c)
43 return (b < c ? c : b);
45 return (a < c ? c : a);
48inline double min (
double a,
double b,
double c)
51 return (b > c ? c : b);
53 return (a > c ? c : a);
56#define REF(x,k,i) x(static_cast<octave_idx_type> (elem((k), (i))) - 1)
66DEFUN (tsearch, args, ,
77 if (args.length () != 5)
80 const double eps = 1.0e-12;
105 double x0, y0, a11, a12, a21, a22, det;
107 a11 = a12 = a21 = a22 = 0.0;
113 const double xt =
xi(kp);
114 const double yt = yi(kp);
119 const double dx1 = xt - x0;
120 const double dx2 = yt - y0;
121 const double c1 = (a22 * dx1 - a21 * dx2) / det;
122 const double c2 = (-a12 * dx1 + a11 * dx2) / det;
123 if (c1 >= -
eps && c2 >= -
eps && (c1 + c2) <= (1 +
eps))
131 for (k = 0; k < nelem; k++)
135 if (xt >= minx(k) && xt <= maxx(k) && yt >= miny(k) && yt <= maxy(k))
140 a11 =
REF (
x, k, 1) - x0;
141 a12 =
REF (y, k, 1) - y0;
142 a21 =
REF (
x, k, 2) - x0;
143 a22 =
REF (y, k, 2) - y0;
144 det = a11 * a22 - a21 * a12;
147 const double dx1 = xt - x0;
148 const double dx2 = yt - y0;
149 const double c1 = (a22 * dx1 - a21 * dx2) / det;
150 const double c2 = (-a12 * dx1 + a11 * dx2) / det;
151 if ((c1 >= -
eps) && (c2 >= -
eps) && ((c1 + c2) <= (1 +
eps)))
OCTINTERP_API void print_usage(void)
#define DEFUN(name, args_name, nargout_name, doc)
Macro to define a builtin function.
double lo_ieee_nan_value(void)
F77_RET_T const F77_DBLE * x
octave_value_list ovl(const OV_Args &... args)
Construct an octave_value_list with less typing.
static const double xi[33]
double min(double a, double b, double c)
OCTAVE_NAMESPACE_BEGIN double max(double a, double b, double c)