Пересечение линии треугольника с другой линией, проходящей через противолежащую вершину и центр описанной окружности

Пересечение линии треугольника с другой линией, проходящей через противолежащую вершину и центр описанной окружности

У меня есть следующий код:

      pair a; pair b; pair c;
      pickup pencircle scaled 0.2pt;
      a = (0, 4cm); b = (-2cm, 0); c = (1cm, 0);
      draw a -- b -- c -- cycle;
      pair p; pair q; pair r; pair d; pair m; pair n;
      p = whatever[b, c]; a - p = whatever * (b - c) rotated 90;
      q = whatever[c, a]; b - q = whatever * (c - a) rotated 90;
      r = whatever[a, b]; c - r = whatever * (a -b) rotated 90;
      d = whatever[a, p] = whatever[b, q]; % orthocenter
      n = 1/4(a + b + c + d); % remarkably...
      m = d rotatedabout(n, 180); % M is also the circumcentre
      path circumcircle;
      circumcircle = fullcircle scaled 2 abs(m - a) shifted m;
      draw circumcircle;
      pair l;
      pickup pencircle scaled 2pt;
      drawdot m;
      pickup pencircle scaled 0.2pt;
      %draw a -- ((a -- m) intersectionpoint (b -- c));

Я могу вычислить центр окружности, и это работает. Но последняя закомментированная строка, если ее раскомментировать, говорит мне, что пути не пересекаются. Это тот случай, когда AMне расширено вычисление пересечения с BC? Я думаю, что могу справиться с этим с помощью shiftedключевого слова, но не знаю как. Любая помощь будет высоко оценена.

решение1

Мне удалось изменить последнюю строку на следующую:

draw a -- (a -- (a - 100(a - m))) intersectionpoint (b -- c);

и получить линию. Кажется, что линию нужно удлинить, чтобы intersectionpointона работала.

решение2

Если вы хотите следовать тому же стилю, что и в предыдущем коде, вы также можете сделать следующее:

pair q ; q = whatever[a,m] = whatever[b,c] ;
draw a -- q ;

Связанный контент