Маркировка пересечения двух лучей

Маркировка пересечения двух лучей

У меня есть код для прямоугольника ABCDи двух его диагоналей. Я пытаюсь нарисовать лучи из смежных вершин Cи D, каждый из которых перпендикулярен диагонали, обозначить пересечение двух лучей Pи нарисовать отрезок прямой через Pотрезок прямой CD, перпендикулярный CD.

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,quotes,backgrounds}


\begin{document}

\begin{tikzpicture}
\coordinate (A) at (-0.5,-0.75);
\coordinate (B) at (-0.5,0.5);
\coordinate (C) at (1,0.5);
\coordinate (D) at (1,-0.75);

\path[fill=yellow] (A) -- (B) -- (C) -- (D) -- cycle;

\path (C) -- ($(C)!1.5cm!90:(A)$);
\path (D) -- ($(D)!1.5cm!-90:(B)$);

\draw[draw=red!50, line width=0.1pt, name path=ray1] (A) -- (C);
\draw[draw=red!50, line width=0.1pt, name path=ray2] (B) -- (D);

%\coordinate [name intersections={of=ray1 and vertical,by={P}}] ;

\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]below left:$A$}] at (A) {};
\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]above left:$B$}] at (B) {};
\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]above right:$C$}] at (C) {};
\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]below right:$D$}] at (D) {};
\end{tikzpicture}
\end{document}

решение1

Может быть, так.

\documentclass{amsart}
\usepackage{tikz}
\usetikzlibrary{calc,intersections,quotes,backgrounds}


\begin{document}

\begin{tikzpicture}
\coordinate (A) at (-0.5,-0.75);
\coordinate (B) at (-0.5,0.5);
\coordinate (C) at (1,0.5);
\coordinate (D) at (1,-0.75);

\path[fill=yellow] (A) -- (B) -- (C) -- (D) -- cycle;

\path[draw,name path=ray1] (C) -- ($(C)!1.5cm!90:(A)$);
\path[draw,name path=ray2] (D) -- ($(D)!1.5cm!-90:(B)$);

\draw[draw=red!50, line width=0.1pt] (A) -- (C);
\draw[draw=red!50, line width=0.1pt] (B) -- (D);

\coordinate [name intersections={of=ray1 and ray2,by={P}}] ;

\node[circle,fill,inner sep=1.5pt,outer sep=0pt,label={right:$P$}] at (P) {};
\draw (P) -- ($(D)!(P)!(C)$);

\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]below left:$A$}] at (A) {};
\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]above left:$B$}] at (B) {};
\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]above right:$C$}] at (C) {};
\node[outer sep=0pt,circle, fill,inner sep=1.5pt,label={[fill=white]below right:$D$}] at (D) {};
\end{tikzpicture}
\end{document}

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

решение2

Что-то вроде этого? Мой отличается, я думаю, от Хариша Кумара, поэтому я опубликую, хотя он ответил первым. Обратите внимание, что с моим методом вторая точка пересечения — это та, которая вам нужна, поэтому я назвал первую Q, чтобы вторая была P.

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{calc,intersections,quotes,backgrounds}

\begin{document}
  \tikzset{
    my circle/.style={outer sep=0pt, circle, fill, inner sep=1.5pt},
    my ray/.style={draw=red!50, line width=.1pt}
  }

  \begin{tikzpicture}
    \coordinate (A) at (-0.5,-0.75);
    \coordinate (B) at (-0.5,0.5);
    \coordinate (C) at (1,0.5);
    \coordinate (D) at (1,-0.75);

    \path[fill=yellow] (A) -- (B) -- (C) -- (D) -- cycle;

    \pgfmathsetmacro\myresult{atan(1.5/1.25)}
    \path [my ray, name path=ray1] (A) -- (C) -- +(-\myresult:1);
    \path [my ray, name path=ray2] (B) -- (D) -- +(\myresult:1);

    \path [name intersections={of=ray1 and ray2, by={Q,P}}] (P) node [right] {P} ;
    \draw (P) -- (C |- P);

    \node[my circle,label={[fill=white]below left:$A$}] at (A) {};
    \node[my circle,label={[fill=white]above left:$B$}] at (B) {};
    \node[my circle,label={[fill=white]above right:$C$}] at (C) {};
    \node[my circle,label={[fill=white]below right:$D$}] at (D) {};
  \end{tikzpicture}
\end{document}

лучи и пересечения

решение3

Для тех, кому это интересно, вотМетаПострешение, которое будет обработано с помощью LuaLaTeX.

Точка пересечения P вычисляется благодаря следующей инструкции, использующей удобный intersectionpointоператор MetaPost между двумя путями.

P = (C--A) rotatedaround (C,90) intersectionpoint (D--B) rotatedaround (D,-90);

Перпендикуляр к CD через P получается просто путем соединения P со средней точкой отрезка CD.

Q = .5[C,D]; … draw P--Q; 

Я также добавил маркировку под прямым углом, благодаря макросу, anglebetweenкоторый является частью MetaPost.Метафунформат.

\documentclass[border=2mm]{standalone}
\usepackage{luamplib}
  \mplibsetformat{metafun}
  \mplibtextextlabel{enable}
\begin{document}
  \begin{mplibcode}
    u := 2cm; pair A, B, C, D, P, Q; 
    A = u*(-.5,-.75); B = u*(-.5,.5); C = u*(1,.5); D = u*(1,-.75); Q = .5[C,D];
    path rectangle; rectangle = A--B--C--D--cycle;
    P = (C--A) rotatedaround (C,90) intersectionpoint (D--B) rotatedaround (D,-90);
    beginfig(1);
      fill rectangle withcolor yellow; 
      pickup pencircle scaled .1bp;
      drawoptions(withcolor red);
      draw B--D; draw A--C;
      draw C -- 1.5[C,P]; draw D -- 1.5[D,P];
      drawoptions(withcolor black);
      freelabeloffset := 5bp;
      forsuffixes M = A, B, C, D, P:
        drawdot M withpen pencircle scaled 3bp;
        freelabel("$" & str M & "$", M, center rectangle);
      endfor
      draw P--Q;
      anglemethod := 2; anglelength := 4bp;
      draw anglebetween(C--A, C--P, "");
      draw anglebetween(D--B, D--P, "");
      draw anglebetween(Q--C, Q--P, "");
    endfig;
  \end{mplibcode}
\end{document}

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

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