Отрезок вращается вокруг точки, которая движется по нему Племянница попросила помочь с решением задачки на Паскале, но что-то не могу смекнуть через какие синусы это реализовать.По отрезку длиной А от одного конца к другому равномерно движется точка. Изобразить на экране вращение этого отрезка относительно этой точки.
Кто подскажет математическую формулу, описывающую данное движение?UPD. Огромное спасибо @OLS и @iiil, за предложенные правильные решения. Остановился на варианте с полярными координатами (просто потому что самое основное было реализовано на Паскале).program polar_rot;
uses graphabc;
const
WindowWidth = 600; WindowHeight = 600;
CenterX = 300; CenterY = 300;
PI = 3.1415926;
Count = 2000; Len = 290;
r = 3; PenWidth = 3;
var
Ro : real;
Len1, Len2 : real;
Time : integer;
X1, Y1, X2, Y2 : integer;
begin
SetWindowSize(WindowWidth, WindowHeight);
SetPenWidth(PenWidth);
for Time := 0 to Count do
begin

Ro := Time / Count * 2 * PI;
Len1 := Len * (Time / Count);
X1 := CenterX + round(Len1 * cos(Ro));
Y1 := CenterY + round(Len1 * sin(Ro));
Len2 := Len - Len1;
X2 := CenterX - round(Len2 * cos(Ro));
Y2 := CenterY - round(Len2 * sin(Ro));

LockDrawing;
ClearWindow(clWhite);
SetPenColor(clBlue);
Line(X1, Y1, X2, Y2);
SetPenColor(clRed);
Circle(CenterX, CenterY, r);
Redraw;
end;
end.

21 Авг 2019 в 06:13
158 +1
0
Ответы
1

Для описания вращения отрезка вокруг точки, которая движется по нему, можно использовать полярные координаты.

Пусть точка движется по отрезку от начала координат до точки (А, 0) за время t. Тогда координаты этой точки в полярных координатах будут (r(t), α(t)), где r(t) - радиус-вектор точки в момент времени t, α(t) - угол, образованный радиус-вектором с положительным направлением оси ОХ.

Для описания вращения самого отрезка относительно этой точки в момент времени t, можно воспользоваться формулами для преобразования координат из декартовых в полярные:

x = r cos(α)
y = r sin(α)

Здесь r - длина отрезка, а α - угол поворота отрезка относительно начального положения.

Отрезок можно изобразить на экране, обновляя его координаты в каждый момент времени t и рассчитывая их по формулам выше. В вашем случае, программное решение на Паскале, использующее полярные координаты, выглядит примерно так, как вы опубликовали в своем обновлении.

Надеюсь, данное объяснение поможет вам лучше понять, как описать данное движение математически.

20 Апр в 13:21
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир