М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации

Матрица поворота. с решением центр фигуры (5: 3). сама фигура имеет координаты (3: 2) (7: 2) (7: 4) (3: 4). повернуть фигуру в любую сторону относительно центра на угол равный 30°.

👇
Ответ:
rminichkina
rminichkina
05.02.2023
Выполняем перенос начала координат в центральную точку, затем поворачиваем фигуру и возвращаем начало координат на место.

// PascalABC.NET 3.2, сборка 1467 от 02.06.2017
// Внимание! Если программа не работает, обновите версию!

type
  Point=(real,real);
  Figure=array of Point;

function MoveTo(Self:Figure;pP:Point):Figure; extensionmethod;
begin
  var n:=Self.Count;
  Result:=new Point[n];
  for var i:=0 to n-1 do
    Result[i]:=(Self[i][0]-pP[0],Self[i][1]-pP[1])
end;

function Rotate(Self:Figure;angle:real):Figure; extensionmethod;
begin
  var mr:=new real[2,2];
  mr[0,0]:=cos(angle); mr[0,1]:=sin(angle);
  mr[1,0]:=-mr[0,1]; mr[1,1]:=mr[0,0];
  var n:=Self.Count;
  Result:=new Point[n];
  for var i:=0 to n-1 do
    Result[i]:=(Self[i][0]*mr[0,0]+Self[i][1]*mr[1,0],
      Self[i][0]*mr[0,1]+Self[i][1]*mr[1,1])
end;

function MoveFrom(Self:Figure;pP:Point):Figure; extensionmethod;
begin
  var n:=Self.Count;
  Result:=new Point[n];
  for var i:=0 to n-1 do
    Result[i]:=(Self[i][0]+pP[0],Self[i][1]+pP[1])
end;

procedure Print(p:Figure;w,d:integer);
begin
  foreach var t in p do
    Writeln(t[0]:w:d,' ',t[1]:w:d)
end;

begin
  var center:Point:=(5.0,3.0);
  var Rectangle:Figure;
  SetLength(Rectangle,4);
  Rectangle[0]:=(3.0,2.0);
  Rectangle[1]:=(7.0,2.0);
  Rectangle[2]:=(7.0,4.0);
  Rectangle[3]:=(3.0,4.0);
  var angle:=30;
  var P:=Rectangle.MoveTo(Center).Rotate(DegToRad(angle)).MoveFrom(Center);
  Writeln('Новые координаты');
  Print(P,9,5)
end.

Результат
Новые координаты
  3.76795   1.13397
  7.23205   3.13397
  6.23205   4.86603
  2.76795   2.86603
4,4(92 оценок)
Открыть все ответы
Ответ:
VasilisaLisMUR
VasilisaLisMUR
05.02.2023
var                                      
i,z,y,x: integer;                 // объявление переменных
begin                              // начало программы
writeln('Введите числа: '); // Вывод сообщения
readln(x,y);                      // Ввод чисел х и у с клавиатуры
while i <> y do                 // Повторять цикл пока i не будет равно y
 begin                             // Вход в цикл
 z:=z+x;                          // z = z + x  (при первом шаге получается 0 = 0 + х) 
 i:=i+1;                            // Увеличиваем счетчик цикла на 1 
 end;                               // Выход из цикла
write(z);                           // Вывод z (произведение х и у)
end.                                // Конец программы 
4,6(93 оценок)
Ответ:
asya1607
asya1607
05.02.2023
var                                      
i,z,y,x: integer;                 // объявление переменных
begin                              // начало программы
writeln('Введите числа: '); // Вывод сообщения
readln(x,y);                      // Ввод чисел х и у с клавиатуры
while i <> y do                 // Повторять цикл пока i не будет равно y
 begin                             // Вход в цикл
 z:=z+x;                          // z = z + x  (при первом шаге получается 0 = 0 + х) 
 i:=i+1;                            // Увеличиваем счетчик цикла на 1 
 end;                               // Выход из цикла
write(z);                           // Вывод z (произведение х и у)
end.                                // Конец программы 
4,7(99 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ