Tengo el código para el rectángulo ABCD
y dos de sus diagonales. Estoy tratando de dibujar rayos de vértices adyacentes C
y D
, cada uno de los cuales es perpendicular a una diagonal, etiquetar la intersección de los dos rayos P
y dibujar un segmento de línea que pasa por P
un segmento de línea CD
que es perpendicular a 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}
Respuesta1
Puede ser así.
\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}
Respuesta2
¿Algo como esto? Creo que el mío es diferente al de Harish Kumar, así que publicaré aunque él respondió primero. Tenga en cuenta que con mi método, el segundo punto de intersección es el que desea, por lo que nombré al primero Q para que el segundo fuera 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}
Respuesta3
Para quien le interese, aquí tenéis unaMetapublicaciónsolución, para ser procesada con LuaLaTeX.
El punto de intersección P se calcula gracias a la siguiente instrucción, haciendo uso del práctico intersectionpoint
operador de MetaPost entre dos caminos.
P = (C--A) rotatedaround (C,90) intersectionpoint (D--B) rotatedaround (D,-90);
La perpendicular a CD que pasa por P se obtiene simplemente uniendo P al punto medio del segmento CD.
Q = .5[C,D]; … draw P--Q;
También agregué marcas de ángulo recto, gracias a la anglebetween
macro que forma parte de MetaPost.Metafunformato.
\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}