С для профессиональных программистов



         

Вращение обьекта


Хотя функция rotate_point(), вычисляющая требуемые значения координат X и Y при вращении точки, уже была нами рассмотрена. Однако, она не может быть использована для вращения (поворотов) объектов. Для этого необходима другая функция. Под объектом здесь и далее будем понимать набор сегментов прямых отрезков. Координаты крайних точек каждого отрезка содержатся в двумерном массиве чисел с плавающей точкой. Каждая строка массива содержит начальные и конечные координаты данного отрезка. Это означает, что первая размерность массива представляет собой количество отрезков, входящих в состав объекта, а вторая размерность будет равна 4 (число координат крайних точек отрезка). Например, массив, приведенный ниже

double object [10][4];

определяет объект, состоящий из 10 отрезков.

Как правило, массив организуется так, как показано на рисунке 4-3.

Первый Второй -------->

индекс индекс

| 0 1 2 3

|

|

V

0 start_X1 start_Y1 end_X1 end_Y1

1 start_X2 start_Y2 end_X2 end_Y2

2 start_X3 start_Y3 end_X3 end_Y3

3 start_X4 start_Y4 end_X4 end_Y4 . .

. .

. .

n start_Xn start_Yn end_Xn end_Yn

Рис. 4-3. Условная организация массива.

Определить объект - это значит разместить в массиве координаты начальных и конечных точек отрезков, составляющих объект. Например, если объект представляет собой прямоугольник вида:

0.0-------------------0.10

|                                               |

|                                               |

|                                               |

|                                               |

10.0-------------------10.10

то в  массив,  определяющий   данный   прямоугольник,   заносятся

следующие числа:

object[0][0] = 0; object[0][1] = 0;

object[0][0] = 0; object[0][3] = 10;

object[1][0] = 0; object[1][1] = 10;

object[1][0] = 10; object[1][3] = 10;

object[2][0] = 10; object[2][1] = 10;

object[2][0] = 10; object[2][3] = 0;

object[3][0] = 10; object[3][1] = 0;

object[3][0] = 0; object[3][3] = 0;

После того, как объект определен, вы можете вращать его, используя функцию rotate_object(), приведенную ниже, по часовой стрелке (клавиша <R>) или в противоположную сторону (клавиша <L>).




Содержание  Назад  Вперед