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

UptoLike

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

36
codx = x; cody = y;
if l < L then TAKT = TAKT + 1
else TAKT = 1
RETURN
Ниже приводится листинг программы на языке Си, которая реализует
алгоритм оценочной функции, приведенный выше, с небольшими
модификациями. Скорость подачи принята 1 шаг за один цикл алгоритма,
направление движения по окружности зависит от введенных координат
центра, начальной и конечной точек.
#include <stdio.h> /* Подключение библиотеки стандартных
функций ввода-вывода */
#include <math.h> /* Подключение библиотеки
математических функций */
#define PI 3.1415 /* Определение числа π */
#define SGN(a) (((a) >= 0) ? 1 : -1) /* Определение макроса
для вычисления знака переменной; макрос возвращает 1, если
значение переменной 0 и возвращает -1, если значение переменной
<0 */
int x_n, y_n, x_k, y_k, I, J; /* Объявление целочисленных
входных переменных для алгоритма: x_n – начальная точка по оси
X, y_n – начальная точка по оси Y, x_k – конечная точка по оси
X, y_k – конечная точка по оси Y, I – координата центра по оси
X, J – координата центра по оси Y */
int x, y, r, codx, cody, f, L, l, X, Y; /* Объявление
целочисленных внутренних переменных алгоритма: x, y – текущие
координаты, r – радиус дуги, codx, cody – переменные для
передачи координат исполнительному устройству, f – значение
оценочной функции, L – полная длина пути по дуге, l – текущая
пройденная длина, X, Y – разница между текущими координатами и
центром окружности */
float a_n, a_k, da; /* Объявление вещественных внутренних
переменных алгоритма: a_n – начальный угол в радианах, a_k –
конечный угол в радианах, da – отрабатываемый по дуге угол (a_k
– a_n) */
/* Определение функции инициализации алгоритма */
void init() {
printf("Введите x_n, y_n, x_k, y_k, I, J: "); /* Вывод
сообщения с просьбой ввести значения входных переменных */
scanf("%d %d %d %d %d %d", &x_n, &y_n, &x_k, &y_k, &I, &J);
/* Ввод входных переменных пользователем */
r = sqrt((x_n - I)*(x_n - I) + (y_n - J) * ( y_n - J));
/* Вычисление радиуса дуги */
             codx = x; cody = y;
             if l < L then TAKT = TAKT + 1
             else TAKT = 1
             RETURN

    Ниже приводится листинг программы на языке Си, которая реализует
алгоритм оценочной функции, приведенный выше, с небольшими
модификациями. Скорость подачи принята 1 шаг за один цикл алгоритма,
направление движения по окружности зависит от введенных координат
центра, начальной и конечной точек.
#include  /* Подключение библиотеки стандартных
функций ввода-вывода */
#include         /* Подключение библиотеки
математических функций */

#define PI             3.1415                /* Определение числа π */

#define SGN(a) (((a) >= 0) ? 1 : -1)    /* Определение макроса
для вычисления знака переменной; макрос возвращает 1, если
значение переменной ≥0 и возвращает -1, если значение переменной
<0 */

int x_n, y_n, x_k, y_k, I, J;      /* Объявление целочисленных
входных переменных для алгоритма: x_n – начальная точка по оси
X, y_n – начальная точка по оси Y, x_k – конечная точка по оси
X, y_k – конечная точка по оси Y, I – координата центра по оси
X, J – координата центра по оси Y */

int x, y, r, codx, cody, f, L, l, X, Y;           /* Объявление
целочисленных внутренних переменных алгоритма: x, y – текущие
координаты, r – радиус дуги, codx, cody – переменные для
передачи координат исполнительному устройству, f – значение
оценочной функции, L – полная длина пути по дуге, l – текущая
пройденная длина, X, Y – разница между текущими координатами и
центром окружности */

float     a_n, a_k, da; /* Объявление вещественных внутренних
переменных алгоритма: a_n – начальный угол в радианах, a_k –
конечный угол в радианах, da – отрабатываемый по дуге угол (a_k
– a_n) */


/* Определение функции инициализации алгоритма */
void init() {
     printf("Введите x_n, y_n, x_k, y_k, I, J: "); /* Вывод
сообщения с просьбой ввести значения входных переменных */
     scanf("%d %d %d %d %d %d", &x_n, &y_n, &x_k, &y_k, &I, &J);
     /* Ввод входных переменных пользователем */
     r = sqrt((x_n - I)*(x_n - I) + (y_n - J) * ( y_n - J));
     /* Вычисление радиуса дуги */

                                     36