Ich habe den Code für das Rechteck ABCD
und zwei seiner Diagonalen. Ich versuche, Strahlen von benachbarten Eckpunkten C
und zu zeichnen D
, von denen jeder senkrecht zu einer Diagonalen steht, den Schnittpunkt der beiden Strahlen zu kennzeichnen P
und ein Liniensegment durch P
das Liniensegment zu zeichnen CD
, das senkrecht zu steht 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}
Antwort1
Könnte so sein.
\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}
Antwort2
So etwas? Meins unterscheidet sich, glaube ich, von dem von Harish Kumar, also werde ich es posten, auch wenn er zuerst geantwortet hat. Beachten Sie, dass bei meiner Methode der zweite Schnittpunkt der gewünschte ist, also habe ich den ersten Q genannt, damit der zweite P wäre.
\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}
Antwort3
Für wen es interessiert, hier ist eineMetaPostLösung, zu verarbeiten mit LuaLaTeX.
Der Schnittpunkt P wird dank der folgenden Anweisung berechnet, wobei der praktische intersectionpoint
Operator von MetaPost zwischen zwei Pfaden verwendet wird.
P = (C--A) rotatedaround (C,90) intersectionpoint (D--B) rotatedaround (D,-90);
Die Senkrechte zu CD durch P erhält man einfach, indem man P mit dem Mittelpunkt des Segments CD verbindet.
Q = .5[C,D]; … draw P--Q;
Ich habe auch rechtwinklige Markierungen hinzugefügt, dank des anglebetween
Makros, das Teil von MetaPost istMetaspaßFormat.
\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}