Моделирование движения одного четырехугольника относительно другого

Моя задача состоит в том, чтобы смоделировать движение синего четырёхугольника, M1N1N2M2, который движется по сторонам оранжевого четырёхугольника, MENT, в промежутке от t = 0 до t = 1: при t = 0 M1N2M3N3 сводится к MN, и когда t = 1 - к равнобедренному треугольнику M3EN3. Но есть две проблемы:

  1. Я не знаю, как смоделировать его так, чтобы M1M2, N1N2 и M1N1, M2N2 двигались с разными скоростями. Если скорости одинаковы, M2N2 достигает M3N3, но на этот момент M1N1 ещё не свёлся к E.
  2. Я также устал выяснять, какие установить коэффициенты, чтобы, когда t = 1, M1N1N2M2 сводился к M3EN3: поскольку я знаю координаты вершин оранжевого четырёхугольника, но не случайных точек на его сторонах, мой синий четырёхугольник сводится к ET при t = 1.

Пожалуйста, помогите мне разобраться с этим...

введите сюда описание изображения

private void timer1_Tick(object sender, EventArgs e)
    {
        Graphics g = CreateGraphics();
        p1 = new Pen(Color.Black, 1);
        p2 = new Pen(Color.Orange, 1);
        p3 = new Pen(Color.Blue, 1);
        p4 = new Pen(Color.White, 1);
        g.DrawLine(p4, (1 - t) * 144 + t * 253, (1 - t) * 309 + t * 106, (1 - t) * 362 + t * 253, (1 - t) * 309 + t * 106);
        g.DrawLine(p4, (1 - t) * 144 + t * 253, (1 - t) * 309 + t * 376, (1 - t) * 362 + t * 253, (1 - t) * 309 + t * 376);
        g.DrawLine(p2, 362, 309, 253, 376);
        g.DrawLine(p2, 144, 309, 253, 376);
        DashStyleChange(p2);
        p1.DashPattern = new float[] { 12F, 12F };
        g.DrawLine(p1, 253, 376, 253, 106);
        DashStyleChange(p2);
        t += 0.01F;
        g.DrawLine(p3, (1 - t) * 144 + t * 253, (1 - t) * 309 + t * 106, (1 - t) * 362 + t * 253, (1 - t) * 309 + t * 106);
        g.DrawLine(p3, (1 - t) * 144 + t * 253, (1 - t) * 309 + t * 376, (1 - t) * 362 + t * 253, (1 - t) * 309 + t * 376);
        if (t >= 0.7) timer1.Stop();
    }

Ответы (0 шт):