Моделирование движения одного четырехугольника относительно другого
Моя задача состоит в том, чтобы смоделировать движение синего четырёхугольника, M1N1N2M2, который движется по сторонам оранжевого четырёхугольника, MENT, в промежутке от t = 0 до t = 1: при t = 0 M1N2M3N3 сводится к MN, и когда t = 1 - к равнобедренному треугольнику M3EN3. Но есть две проблемы:
- Я не знаю, как смоделировать его так, чтобы M1M2, N1N2 и M1N1, M2N2 двигались с разными скоростями. Если скорости одинаковы, M2N2 достигает M3N3, но на этот момент M1N1 ещё не свёлся к E.
- Я также устал выяснять, какие установить коэффициенты, чтобы, когда 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();
}
