void funk1 int x1 int y1 double z1 int x2 int y2 double z2 double x0 x

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void funk1(int x1, int y1, double z1, int x2, int y2, double z2)
{
double x0 = x1,z0 = z1, Yline = 0, Zline = 0, Ynoise = 0;
double delta = (x2-x1)/sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
double deltaz = (z2-z1)/sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
if(x1! = x2)
{
do
{
x0+=delta;
Yline = y1 + (y2-y1)*(x0-x1)/(x2-x1);
Zline = z1 + (z2-z1)*(x0-x1)/(x2-x1);
Ynoise = funk(x0,Zline); //функция шума от координаты х0 и zline
}
while(Yline>Ynoise)
//по выходу из цикла x0 и Zline - искомые координаты
//их тип double, нужно округлить до целого числа
}
else
{
do
{
z0+=deltaz;
Yline = y1 + (y2-y1)*(z0-z1)/(z2-z1);
Ynoise = funk(x1,z0); //функция шума от x1 и z0 (x = const, т.к. х1=х2 => x не меняется)
}
while(Yline>Ynoise)
//по выходу из цикла x1 и z0 - искомые координаты
//их тип double, нужно округлить до целого числа
}
}