Основы числового программного управления. Хитров А.И - 38 стр.

UptoLike

Составители: 

38
}
else
if(abs(X) < abs(Y) && SGN(f) * SGN(X) * SGN(Y) != SGN(da))
{
x = x + SGN(Y) * SGN(da); /* Изменение координаты
x */
f = f + 2 * X * SGN(Y) * SGN(da) + 1; /* Изменение
значения оценочной функции */
}
else {
x = x + SGN(Y) * SGN(da); /* Изменение координаты
x */
y = y - SGN(X) * SGN(da); /* Изменение координаты
y */
/* Изменение значения оценочной функции */
f = f +2 * (abs(X) - abs(Y)) * SGN (Y) * SGN(X) *
SGN(da)+ 2 * 1;
}
l = l + abs(x - codx) + abs(y - cody); /* Изменение
пройденного пути */
codx = x; cody = y; /* Установка переменных для передачи
исполнительному устройству */
printf("f=%d\tcodx=%d\tcody=%d\tl=%d\n", f, codx, cody, l);
/* Вывод результатов очередного шага алгоритма на экран */
}
/* Главная функция программы, с нее начинается выполнение */
int main() {
/* Вызов функции инициализации алгоритма оценочной функции
*/
init();
/* В этом месте можно передать начальные координаты cod_x и
cod_y (равные x_n и y_n) на исполнительное устройство */
/* Организация циклического вызова функции расчета очередного
шага оценочной функции до тех пор пока текущий пройденный путь
меньше полной длины пути по дуге */
while(l < L) {
circle();
/* В этом месте можно передать рассчитанные координаты
cod_x и cod_y на исполнительное устройство */
}
return 0; /* Завершение главной функции программы */
}
       }
       else
       if(abs(X) < abs(Y) && SGN(f) * SGN(X) * SGN(Y) != SGN(da))
{
            x = x + SGN(Y) * SGN(da);     /* Изменение координаты
x */
          f = f + 2 * X * SGN(Y) * SGN(da) + 1;   /* Изменение
значения оценочной функции */
     }
     else {
          x = x + SGN(Y) * SGN(da);     /* Изменение координаты
x */
          y = y - SGN(X) * SGN(da);     /* Изменение координаты
y */
/* Изменение значения оценочной функции */
          f = f +2 * (abs(X) - abs(Y)) * SGN (Y) * SGN(X) *
SGN(da)+ 2 * 1;
     }
     l = l + abs(x - codx) + abs(y - cody); /* Изменение
пройденного пути */
     codx = x; cody = y; /* Установка переменных для передачи
исполнительному устройству */
     printf("f=%d\tcodx=%d\tcody=%d\tl=%d\n", f, codx, cody, l);
     /* Вывод результатов очередного шага алгоритма на экран */
}


/* Главная функция программы, с нее начинается выполнение */
int main() {
     /* Вызов функции инициализации алгоритма оценочной функции
*/
     init();
     /* В этом месте можно передать начальные координаты cod_x и
cod_y (равные x_n и y_n) на исполнительное устройство */
/* Организация циклического вызова функции расчета очередного
шага оценочной функции до тех пор пока текущий пройденный путь
меньше полной длины пути по дуге */
     while(l < L) {
          circle();
          /* В этом месте можно передать рассчитанные координаты
cod_x и cod_y на исполнительное устройство */
     }
     return 0; /* Завершение главной функции программы */
}




                                 38