diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex | 411 |
1 files changed, 411 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex new file mode 100644 index 00000000000..cce1c9066f7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex @@ -0,0 +1,411 @@ +\section{Definition of a point} + + Points can be specified in any of the following ways: +\begin{itemize} +\item Cartesian coordinates; +\item Polar coordinates; +\item Named points; +\item Relative points. +\end{itemize} + +Even if it's possible, I think it's a bad idea to work directly with coordinates. Preferable is to use named points. +A point is defined if it has a name linked to a unique pair of decimal numbers. + Let $(x,y)$ or $(a:d)$ i.e. ($x$ abscissa, $y$ ordinate) or ($a$ angle: $d$ distance). + This is possible because the plan has been provided with an orthonormed Cartesian coordinate system. The working axes are supposed to be (ortho)normed with unity equal to $1$~cm or something equivalent like $0.39370$~in. + Now by default if you use a grid or axes, the rectangle used is defined by the coordinate points: $(0,0)$ and $(10,10)$. It's the macro \tkzcname{tkzInit} of the package \tkzNamePack{tkz-base} that creates this rectangle. Look at the following two codes and the result of their compilation: + +\begin{tkzexample}[latex=10cm,small] +\begin{tikzpicture} +\tkzGrid +\tkzDefPoint(0,0){O} +\tkzDrawPoint[red](O) +\tkzShowBB[line width=2pt,teal] +\end{tikzpicture} +\end{tkzexample} + + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \tkzDefPoint(0,0){O} + \tkzDefPoint(5,5){A} + \tkzDrawSegment[blue](O,A) + \tkzDrawPoints[red](O,A) + \tkzShowBB[line width=2pt,teal] +\end{tikzpicture} +\end{tkzexample} + + The Cartesian coordinate $(a,b)$ refers to the + point $a$ centimeters in the $x$-direction and $b$ centimeters in the + $y$-direction. + + A point in polar coordinates requires an angle $\alpha$, in degrees, + and a distance $d$ from the origin with a dimensional + unit by default it's the \texttt{cm}. + + +\begin{minipage}[b]{0.5\textwidth} + Cartesian coordinates +\begin{tkzexample}[vbox,small] +\begin{tikzpicture}[scale=1] + \tkzInit[xmax=5,ymax=5] + \tkzDefPoints{0/0/O,1/0/I,0/1/J} + \tkzDrawXY[noticks,>=latex] + \tkzDefPoint(3,4){A} + \tkzDrawPoints(O,A) + \tkzLabelPoint(A){$A_1 (x_1,y_1)$} + \tkzShowPointCoord[xlabel=$x_1$, + ylabel=$y_1$](A) + \tkzLabelPoints(O,I) + \tkzLabelPoints[left](J) + \tkzDrawPoints[shape=cross](I,J) +\end{tikzpicture} +\end{tkzexample}% +\end{minipage} +\begin{minipage}[b]{0.5\textwidth} + Polar coordinates +\begin{tkzexample}[vbox,small] +\begin{tikzpicture}[,scale=1] + \tkzInit[xmax=5,ymax=5] + \tkzDefPoints{0/0/O,1/0/I,0/1/J} + \tkzDefPoint(40:4){P} + \tkzDrawXY[noticks,>=triangle 45] + \tkzDrawSegment[dim={$d$, + 16pt,above=6pt}](O,P) + \tkzDrawPoints(O,P) + \tkzMarkAngle[mark=none,->](I,O,P) + \tkzFillAngle[fill=blue!20, + opacity=.5](I,O,P) + \tkzLabelAngle[pos=1.25](I,O,P){$\alpha$} + \tkzLabelPoint(P){$P (\alpha : d )$} + \tkzDrawPoints[shape=cross](I,J) + \tkzLabelPoints(O,I) + \tkzLabelPoints[left](J) +\end{tikzpicture} +\end{tkzexample} +\end{minipage}% + +The \tkzNameMacro{tkzDefPoint} macro is used to define a point by assigning coordinates to it. This macro is based on \tkzNameMacro{coordinate}, a macro of \TIKZ. It can use \TIKZ-specific options such as \tkzname{shift}. If calculations are required then the \tkzNamePack{xfp} package is chosen. We can use Cartesian or polar coordinates. + +\subsection{Defining a named point \tkzcname{tkzDefPoint}} + +\begin{NewMacroBox}{tkzDefPoint}{\oarg{local options}\parg{$x,y$}\marg{name} or \parg{$\alpha$:$d$}\marg{name}}% +\begin{tabular}{lll}% +arguments & default & definition \\ +\midrule +\TAline{($x,y$)}{no default}{$x$ and $y$ are two dimensions, by default in cm.} +\TAline{($\alpha$:$d$)}{no default}{$\alpha$ is an angle in degrees, $d$ is a dimension} +\TAline{\{name\}}{no default}{Name assigned to the point: $A$, $T_a$ ,$P1$ etc ...} +\bottomrule +\end{tabular} + +\medskip +The obligatory arguments of this macro are two dimensions expressed with decimals, in the first case they are two measures of length, in the second case they are a measure of length and the measure of an angle in degrees. + +\medskip +\begin{tabular}{lll}% +\toprule +options & default & definition \\ +\midrule +\TOline{label} {no default} {allows you to place a label at a predefined distance} +\TOline{shift} {no default} {adds $(x,y)$ or $(\alpha:d)$ to all coordinates} +\end{tabular} +\end{NewMacroBox} + +\subsubsection{Cartesian coordinates } + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture} + \tkzInit[xmax=5,ymax=5] + \tkzDefPoint(0,0){A} + \tkzDefPoint(4,0){B} + \tkzDefPoint(0,3){C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \end{tikzpicture} +\end{tkzexample} + +\subsubsection{Calculations with \tkzNamePack{xfp}} + + \begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=1] + \tkzInit[xmax=4,ymax=4] + \tkzGrid + \tkzDefPoint(-1+2,sqrt(4)){O} + \tkzDefPoint({3*ln(exp(1))},{exp(1)}){A} + \tkzDefPoint({4*sin(pi/6)},{4*cos(pi/6)}){B} + \tkzDrawPoints[color=blue](O,B,A) +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Polar coordinates } + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture} + \foreach \an [count=\i] in {0,60,...,300} + { \tkzDefPoint(\an:3){A_\i}} + \tkzDrawPolygon(A_1,A_...,A_6) + \tkzDrawPoints(A_1,A_...,A_6) + \end{tikzpicture} +\end{tkzexample} + +\subsubsection{Calculations and coordinates} +You must follow the syntax of \tkzNamePack{xfp} here. It is always possible to go through \tkzNamePack{pgfmath} but in this case, the coordinates must be calculated before using the macro \tkzcname{tkzDefPoint}. + +\begin{tkzexample}[latex=6cm,small] + \begin{tikzpicture}[scale=.5] + \foreach \an [count=\i] in {0,2,...,358} + { \tkzDefPoint(\an:sqrt(sqrt(\an mm))){A_\i}} + \tkzDrawPoints(A_1,A_...,A_180) + \end{tikzpicture} +\end{tkzexample} + + +\subsubsection{Relative points} +First, we can use the \tkzNameEnv{scope} environment from \TIKZ. +In the following example, we have a way to define an equilateral triangle. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=1] + \tkzSetUpLine[color=blue!60] + \begin{scope}[rotate=30] + \tkzDefPoint(2,3){A} + \begin{scope}[shift=(A)] + \tkzDefPoint(90:5){B} + \tkzDefPoint(30:5){C} + \end{scope} + \end{scope} + \tkzDrawPolygon(A,B,C) +\tkzLabelPoints[above](B,C) +\tkzLabelPoints[below](A) +\tkzDrawPoints(A,B,C) +\end{tikzpicture} +\end{tkzexample} + +%<---------------------------------------------------------------------------> +\subsection{Point relative to another: \tkzcname{tkzDefShiftPoint}} +\begin{NewMacroBox}{tkzDefShiftPoint}{\oarg{Point}\parg{$x,y$}\marg{name} or \parg{$\alpha$:$d$}\marg{name}}% +\begin{tabular}{lll}% +arguments & default & definition \\ +\midrule +\TAline{($x,y$)}{no default}{$x$ and $y$ are two dimensions, by default in cm.} +\TAline{($\alpha$:$d$)}{no default}{$\alpha$ is an angle in degrees, $d$ is a dimension} + +\midrule +options & default & definition \\ + +\midrule +\TOline{[pt]} {no default} {\tkzcname{tkzDefShiftPoint}[A](0:4)\{B\}} +\end{tabular} +\end{NewMacroBox} + +\subsubsection{Isosceles triangle with \tkzcname{tkzDefShiftPoint}} +This macro allows you to place one point relative to another. This is equivalent to a translation. Here is how to construct an isosceles triangle with main vertex $A$ and angle at vertex of $30^{\circ} $. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[rotate=-30] + \tkzDefPoint(2,3){A} + \tkzDefShiftPoint[A](0:4){B} + \tkzDefShiftPoint[A](30:4){C} + \tkzDrawSegments(A,B B,C C,A) + \tkzMarkSegments[mark=|,color=red](A,B A,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(B,C) + \tkzLabelPoints[above left](A) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Equilateral triangle} +Let's see how to get an equilateral triangle (there is much simpler) + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=1] + \tkzDefPoint(2,3){A} + \tkzDefShiftPoint[A](30:3){B} + \tkzDefShiftPoint[A](-30:3){C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(B,C) + \tkzLabelPoints[above left](A) + \tkzMarkSegments[mark=|,color=red](A,B A,C B,C) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Parallelogram} +There's a simpler way +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \tkzDefPoint(0,0){A} + \tkzDefPoint(30:3){B} + \tkzDefShiftPointCoord[B](10:2){C} + \tkzDefShiftPointCoord[A](10:2){D} + \tkzDrawPolygon(A,...,D) + \tkzDrawPoints(A,...,D) +\end{tikzpicture} +\end{tkzexample} + +%<---------------------------------------------------------------------------> +\subsection{Definition of multiple points: \tkzcname{tkzDefPoints}} + +\begin{NewMacroBox}{tkzDefPoints}{\oarg{local options}\marg{$x_1/y_1/n_1,x_2/y_2/n_2$, ...}}% +$x_i$ and $y_i$ are the coordinates of a referenced point $n_i$ + +\begin{tabular}{lll}% +\toprule +arguments & default & example \\ +\midrule +\TAline{$x_i/y_i/n_i$}{}{\tkzcname{tkzDefPoints\{0/0/O,2/2/A\}}} +\end{tabular} + +\medskip +\begin{tabular}{lll}% +options & default & definition \\ +\midrule +\TOline{shift} {no default} {Adds $(x,y)$ or $(\alpha:d)$ to all coordinates} +\end{tabular} +\end{NewMacroBox} + +\subsection{Create a triangle} +\begin{tkzexample}[latex=6cm,small] +\begin{tikzpicture}[scale=1] + \tkzDefPoints{0/0/A,4/0/B,4/3/C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) +\end{tikzpicture} +\end{tkzexample} + +\subsection{Create a square} +Note here the syntax for drawing the polygon. +\begin{tkzexample}[latex=6cm,small] +\begin{tikzpicture}[scale=1] + \tkzDefPoints{0/0/A,2/0/B,2/2/C,0/2/D} + \tkzDrawPolygon(A,...,D) + \tkzDrawPoints(A,B,C,D) +\end{tikzpicture} +\end{tkzexample} + +\section{Special points} +The introduction of the dots was done in \tkzname{tkz-base}, the most important macro being \tkzcname{tkzDefPoint}. Here are some special points. +%<---------------------------------------------------------------------------> +\subsection{Middle of a segment \tkzcname{tkzDefMidPoint}} +It is a question of determining the middle of a segment. + +\begin{NewMacroBox}{tkzDefMidPoint}{\parg{pt1,pt2}}% +The result is in \tkzname{tkzPointResult}. We can access it with \tkzcname{tkzGetPoint}. + + \medskip +\begin{tabular}{lll}% +\toprule +arguments & default & definition \\ +\midrule +\TAline{(pt1,pt2)}{no default}{pt1 and pt2 are two points} +\end{tabular} +\end{NewMacroBox} + +\subsubsection{Use of \tkzcname{tkzDefMidPoint}} +Review the use of \tkzcname{tkzDefPoint} in \tkzNamePack{tkz-base}. +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=1] + \tkzDefPoint(2,3){A} + \tkzDefPoint(4,0){B} + \tkzDefMidPoint(A,B) \tkzGetPoint{C} + \tkzDrawSegment(A,B) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints[right](A,B,C) +\end{tikzpicture} +\end{tkzexample} + +\subsection{Barycentric coordinates } + +$pt_1$, $pt_2$, \dots, $pt_n$ being $n$ points, they define $n$ vectors $\overrightarrow{v_1}$, $\overrightarrow{v_2}$, \dots, $\overrightarrow{v_n}$ with the origin of the referential as the common endpoint. $\alpha_1$, $\alpha_2$, +\dots $\alpha_n$ are $n$ numbers, the vector obtained by: +\begin{align*} + \frac{\alpha_1 \overrightarrow{v_1} + \alpha_2 \overrightarrow{v_2} + \cdots + \alpha_n \overrightarrow{v_n}}{\alpha_1 + + \alpha_2 + \cdots + \alpha_n} +\end{align*} +defines a single point. + +\begin{NewMacroBox}{tkzDefBarycentricPoint}{\parg{pt1=$\alpha_1$,pt2=$\alpha_2$,\dots}}% +\begin{tabular}{lll}% +arguments & default & definition \\ +\midrule +\TAline{(pt1=$\alpha_1$,pt2=$\alpha_2$,\dots)}{no default}{Each point has a assigned weight} +\bottomrule +\end{tabular} + +\medskip +You need at least two points. +\end{NewMacroBox} + + +\subsubsection{Using \tkzcname{tkzDefBarycentricPoint} with two points} +In the following example, we obtain the barycentre of points $A$ and $B$ with coefficients $1$ and $2$, in other words: +\[ + \overrightarrow{AI}= \frac{2}{3}\overrightarrow{AB} +\] + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} + \tkzDefPoint(2,3){A} + \tkzDefShiftPointCoord[2,3](30:4){B} + \tkzDefBarycentricPoint(A=1,B=2) + \tkzGetPoint{I} + \tkzDrawPoints(A,B,I) + \tkzDrawLine(A,B) + \tkzLabelPoints(A,B,I) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{Using \tkzcname{tkzDefBarycentricPoint} with three points} +This time $M$ is simply the centre of gravity of the triangle. For reasons of simplification and homogeneity, there is also \tkzcname{tkzCentroid}. +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.8] + \tkzDefPoint(2,1){A} + \tkzDefPoint(5,3){B} + \tkzDefPoint(0,6){C} + \tkzDefBarycentricPoint(A=1,B=1,C=1) + \tkzGetPoint{M} + \tkzDefMidPoint(A,B) \tkzGetPoint{C'} + \tkzDefMidPoint(A,C) \tkzGetPoint{B'} + \tkzDefMidPoint(C,B) \tkzGetPoint{A'} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A',B',C') + \tkzDrawPoints(A,B,C,M) + \tkzDrawLines[add=0 and 1](A,M B,M C,M) + \tkzLabelPoint(M){$M$} + \tkzAutoLabelPoints[center=M](A,B,C) + \tkzAutoLabelPoints[center=M,above right](A',B',C') +\end{tikzpicture} +\end{tkzexample} + +\subsection{Internal Similitude Center} +The centres of the two homotheties in which two circles correspond are called external and internal centres of similitude. + +\begin{tkzexample}[latex=6cm,small] +\begin{tikzpicture}[scale=.75,rotate=-30] + \tkzDefPoint(0,0){O} + \tkzDefPoint(4,-5){A} + \tkzDefIntSimilitudeCenter(O,3)(A,1) + \tkzGetPoint{I} + \tkzExtSimilitudeCenter(O,3)(A,1) + \tkzGetPoint{J} + \tkzDefTangent[from with R= I](O,3 cm) + \tkzGetPoints{D}{E} + \tkzDefTangent[from with R= I](A,1 cm) + \tkzGetPoints{D'}{E'} + \tkzDefTangent[from with R= J](O,3 cm) + \tkzGetPoints{F}{G} + \tkzDefTangent[from with R= J](A,1 cm) + \tkzGetPoints{F'}{G'} + \tkzDrawCircle[R,fill=red!50,opacity=.3](O,3 cm) + \tkzDrawCircle[R,fill=blue!50,opacity=.3](A,1 cm) + \tkzDrawSegments[add = .5 and .5,color=red](D,D' E,E') + \tkzDrawSegments[add= 0 and 0.25,color=blue](J,F J,G) + \tkzDrawPoints(O,A,I,J,D,E,F,G,D',E',F',G') + \tkzLabelPoints[font=\scriptsize](O,A,I,J,D,E,F,G,D',E',F',G') +\end{tikzpicture} +\end{tkzexample} + +\endinput + + |