4#include <grass/raster.h>
22 for (i = 0; i <= argc; i++)
28int f_graph(
int argc,
const int *argt,
void **args)
30 DCELL **argz = (DCELL **)args;
32 int n = (argc - 1) / 2;
41 if (argt[0] != DCELL_TYPE)
44 for (i = 1; i <= argc; i++)
45 if (argt[i] != DCELL_TYPE)
49#define X(j) (argz[2 + 2 * (j) + 0][i])
50#define Y(j) (argz[2 + 2 * (j) + 1][i])
56 for (j = 0; j < n; j++)
60 for (j = 0; j < n - 1; j++)
72 if (IS_NULL_D(&
Y(n - 1)))
78 for (j = 0; j < n - 1; j++) {
82 if (IS_NULL_D(&
Y(j)) || IS_NULL_D(&
Y(j + 1)))
85 res[i] =
Y(j) + (
x -
X(j)) * (
Y(j + 1) -
Y(j)) / (
X(j + 1) -
X(j));
102int f_graph2(
int argc,
const int *argt,
void **args)
104 DCELL **argz = (DCELL **)args;
105 DCELL *res = argz[0];
106 int n = (argc - 1) / 2;
115 if (argt[0] != DCELL_TYPE)
118 for (i = 1; i <= argc; i++)
119 if (argt[i] != DCELL_TYPE)
122 for (i = 0; i <
columns; i++) {
123#define X(j) (argz[2 + (j) + 0][i])
124#define Y(j) (argz[2 + (j) + n][i])
125#define x (argz[1][i])
130 for (j = 0; j < n; j++)
131 if (IS_NULL_D(&
X(j)))
134 for (j = 0; j < n - 1; j++)
135 if (
X(j + 1) <=
X(j))
139 if (IS_NULL_D(&
Y(0)))
146 if (IS_NULL_D(&
Y(n - 1)))
152 for (j = 0; j < n - 1; j++) {
156 if (IS_NULL_D(&
Y(j)) || IS_NULL_D(&
Y(j + 1)))
159 res[i] =
Y(j) + (
x -
X(j)) * (
Y(j + 1) -
Y(j)) / (
X(j + 1) -
X(j));
int f_graph2(int argc, const int *argt, void **args)
int f_graph(int argc, const int *argt, void **args)
int c_graph(int argc, int *argt)