diff options
author | Karl Berry <karl@freefriends.org> | 2022-07-15 21:46:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-07-15 21:46:25 +0000 |
commit | a37835eecfb8c04bd99ca2420cc72418dec4198b (patch) | |
tree | a1c9effe63509d07db09207df1153ef0ed5ba255 /Master/texmf-dist | |
parent | 0c65eda87a3a65cdb4bcf42a2912bd9721816bd7 (diff) |
tkz-euclide (15jul22)
git-svn-id: svn://tug.org/texlive/trunk@63907 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
68 files changed, 2867 insertions, 2688 deletions
diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/README.md b/Master/texmf-dist/doc/latex/tkz-euclide/README.md index 0f6e6b83809..89c6ffc1e77 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/README.md +++ b/Master/texmf-dist/doc/latex/tkz-euclide/README.md @@ -1,6 +1,6 @@ # tkz-euclide — for euclidean geometry -Release 4.051 b 2022/02/25 +Release 4.2c 2022/07/14 ## Description @@ -67,14 +67,98 @@ files, ready for compilation. Other examples, in French, are on my site. -## Compatibility - -The new version of `tkz-euclide` is *not* fully compatible with the version -3.06 but the differences are minor. ## History -- 4.051b Fixed a problem when tkz-base is loaded. +- 4.2c + Now \tkzDefCircle gives two points as results: the center of the circle and a point of the circle. When a point of the circle is known, it is enough to use \tkzGetPoint or \tkzGetFirstPoint + to get the center, otherwise \tkzGetPoints will give you the center and a point of the circle. You can always get the length of the radius with \tkzGetLength . I wanted to favor working with nodes and banish the appearance of numbers in the code. + + In order to isolate the definitions, I deleted or modified certain macros which are: \tkzDrawLine , \tkzDrawTriangle , \tkzDrawCircle , \tkzDrawSemiCircle and \tkzDrawRectangle ; + + Thus \tkzDrawSquare(A,B) becomes \tkzDefSquare(A,B) \tkzGetPoints{C}{D} then + + \tkzDrawPolygon(A,B,C,D) ; + + + + If you want to draw a circle, you can't do so \tkzDrawCircle[R](A,1) . First you have to define the point through which the circle passes, so you have to do + \tkzDefCircle[R](A,1) \tkzGetPoint{a} and finally \tkzDrawCircle(A,a) . Another possibilty is to define a point on the circle \tkzDefShiftPoint[A](1,O){a} ; + + + The following macros tkzDefCircleBy[orthogonal through] and \tkzDefCircleBy[orthogonal from] become tkzDefCircle[orthogonal through] and \tkzDefCircle[orthogonal from] ; + + + \tkzDefLine[euler](A,B,C) is a macro that allows you to obtain the line of \tkzname{Euler} when possible. \tkzDefLine[altitude](A,B,C) is possible again, as well as \tkzDefLine[tangent at=A](O) and \tkzDefLine[tangent from=P](O,A) which did not works; + + + \tkzDefTangent is replaced by \tkzDelLine[tangent from = ...] or \tkzDelLine[tangent at = ...] + + + I added the macro \tkzPicAngle[tikz options](A,B,C) for those who prefer to use \TIKZ\ . + + + The order of the arguments of the macro \tkzcname{tkzDefPointOnCircle} has changed: now it is center, angle and point or radius. + I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}. + + + I added the option \tkzname{reverse} to the arcs paths. This allows to reverse the path and to reverse if necessary the arrows that would be present. + + + I have unified the styles for the labels. There is now only \tkzname{label style} left which is valid for points, segments, lines, circles and angles. I have deleted \tkzname{label seg style} \tkzname{label line style} and \tkzname{label angle style} + + I added the macro tkzFillAngles to use several angles. + + Correction option \tkzname{return} witk \tkzcname{tkzProtractor} + + As a reminder, the following changes have been made previously: + + \tkzDrawMedian , \tkzDrawBisector , \tkzDrawAltitude , \tkzDrawMedians , \tkzDrawBisectors et \tkzDrawAltitudes do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with \tkzDefSpcTriangle[median] and then to choose the ones you are going to draw with \tkzDrawSegments or \tkzDrawLines ; + + \tkzDrawTriangle has been deleted. \tkzDrawTriangle[equilateral] was handy but it is better to get the third point with \tkzDefTriangle[equilateral] and then draw with \tkzDrawPolygon ; idem for \tkzDrawSquare and \tkzDrawGoldRectangle ; + + + The circle inversion was badly defined so I rewrote the macro. The input arguments are always the center and a point of the circle, the output arguments are the center of the image circle and a point of the image circle or two points of the image line if the antecedent circle passes through the pole of the inversion. If the circle passes the inversion center, the image is a straight line, the validity of the procedure depends on the choice of the point on the antecedent circle; + + Correct allocation for gold sublime and euclide triangles; + + + I added the option " next to" for the intersections LC and CC; + + + Correction option isoceles right; + + + \tkzDefMidArc(O,A,B) gives the middle of the arc center $O$ from $A$ to $B$; + + Good news : Some useful tools have been added. They are present on an experimental basis and will undoubtedly need to be improved; + + + The options "orthogonal from and through" depend now of \tkzcname{tkzDefCircleBy} + + + \tkzDotProduct(A,B,C) computes the scalar product in an orthogonal reference system of the vectors $\overrightarrow{A,B}$ and $\overrightarrow{A,C}$. + + \tkzDotProduct(A,B,C)=aa'+bb' if vec{AB} =(a,b) and vec{AC} =(a',b') + + + \tkzPowerCircle(A)(B,C) power of point $A$ with respect to the circle of center $B$ passing through $C$; + + + \tkzDefRadicalAxis(A,B)(C,D) Radical axis of two circles of center $A$ and $C$; + + + Some tests : \tkzIsOrtho(A,B,C) and \tkzIsLinear(A,B,C) The first indicates whether the lines $(A,B)$ and $(A,C)$ are orthogonal. The second indicates whether the points $A$, $B$ and $C$ are aligned; + + \tkzIsLinear(A,B,C) if $A$,$B$,$C$ are aligned then \tkzLineartrue + you can use \iftkzLinear (idem for \tkzIsOrtho ); + + A style for vectors has been added that you can of course modify + tikzset{vector style/.style={>=Latex,->}} ; + + + Now it's possible to add an arrow on a line or a circle with the option tkz arrow . + - 4.05b \tkzInterLC new option near new method to choice the points diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex index 07b1982dc7e..8aee9b70214 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex @@ -15,7 +15,6 @@ \item \tkzcname{tkzGetPoint\{A\}} in place of \tkzcname{tkzGetFirstPoint\{A\}}. When a macro gives two points as results, either we retrieve these points using \tkzcname{tkzGetPoints\{A\}\{B\}}, or we retrieve only one of the two points, using \tkzcname{tkzGetFirstPoint\{A\}} or \tkzcname{tkzGetSecondPoint\{A\}}. These two points can be used with the reference \tkzname{tkzFirstPointResult} or \tkzname{tkzSecondPointResult}. It is possible that a third point is given as\\ \tkzname{tkzPointResult}; - \item Mixing options and arguments; all macros that use a circle need to know the radius of the circle. If the radius is given by a measure then the option includes a \tkzname{R}. @@ -26,7 +25,7 @@ \item Do not mix the syntax of \tkzNamePack{pgfmath} and \tkzNamePack{xfp}. I've often chosen \tkzNamePack{xfp} but if you prefer pgfmath then do your calculations before passing parameters. - \item Error "dimension too large" : In some cases, this error occurs. One way to avoid it is to use the "\tkzname{xfp}" option. When this option is used in an environment, the "veclen" function is replaced by a function dependent on "xfp". For example, an error occurs if you use the macro \tkzcname{tkzDrawArc} + \item Error "dimension too large" : In some cases, this error occurs. One way to avoid it is to use the "\tkzname{xfp}" option. When this option is used in an scope, the "veclen" function is replaced by a function dependent on "xfp". Do not use intersection macros in this scope. For example, an error occurs if you use the macro \tkzcname{tkzDrawArc} with too small an angle. The error is produced by the \NameLib{decoration} library when you want to place a mark on an arc. Even if the mark is absent, the error is still present. \end{itemize} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex index d1e2e2c8681..d077256d8a8 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex @@ -5,7 +5,6 @@ In trigonometry and mathematics in general, plane angles are conventionally meas Let us agree that an angle measured counterclockwise is positive. \begin{center} - \begin{tikzpicture}[scale=.75] \node {clockwise}; \tkzDefPoint(0,0){O} \tkzDefPoint(90:2){A}\tkzDefPoint(180:2){B} @@ -16,7 +15,6 @@ Let us agree that an angle measured counterclockwise is positive. \tkzDefPoint(0,0){O} \tkzDefPoint(90:2){A}\tkzDefPoint(0:2){B} \tkzDrawArc[black,line width=2pt,arrows = {-Stealth}](O,A)(B) \end{tikzpicture} - \end{center} \tkzname{Angles} are involved in several macros like \tkzcname{tkzDefPoint},\tkzcname{tkzDefPointBy[rotation = \dots]}, \tkzcname{tkzDrawArc} @@ -33,7 +31,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=2,-Stealth,teal](A,O,B) \tkzFindAngle(A,O,B) \tkzGetAngle{an} \tkzLabelAngle[pos=1,teal](A,O,B){$ \pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) + \tkzLabelPoints(A) \tkzLabelPoints[above](B) \end{tikzpicture}} {Rotation $80^\circ$ from $(O,A)$ to $(O,B)$\\ {\textbackslash}tkzDefPointBy[rotation=center O angle 80]} @@ -45,7 +43,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=2,Stealth-,red](B,O,A) \tkzFindAngle(B,O,A) \tkzGetAngle{an} \tkzLabelAngle[pos=1,red](B,O,A){$-\pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) +\tkzLabelPoints[right](A) \tkzLabelPoints[below](B) \end{tikzpicture}} {Rotation $-80^\circ$ from $(O,A)$ to $(O,B)$\\ {\textbackslash}tkzDefPointBy[rotation=center O angle -80]} @@ -57,7 +55,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=1.5,-Stealth,teal](A,O,B) \tkzFindAngle(A,O,B) \tkzGetAngle{an} \tkzLabelAngle[pos=1,teal](A,O,B){$ \pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) +\tkzLabelPoints(A) \tkzLabelPoints[above](B) \end{tikzpicture}} { {\textbackslash}tkzFindAngle(A,O,B) gives $80$} & @@ -68,7 +66,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=1,-Stealth,red](A,O,B) \tkzFindAngle(A,O,B) \tkzGetAngle{an} \tkzLabelAngle[pos=.75,red](A,O,B){$\pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) +\tkzLabelPoints[right](A) \tkzLabelPoints[below](B) \end{tikzpicture}} {{\textbackslash}tkzFindAngle(A,O,B) gives $\pgfmathprintnumber{\an}^\circ$} \\\hline @@ -78,8 +76,6 @@ Let us agree that an angle measured counterclockwise is positive. As we can see, the $-80^\circ$ rotation defines a clockwise angle but the macro \tkzcname{tkzFindAngle} recovers a counterclockwise angle. - - \subsection{Recovering an angle \tkzcname{tkzGetAngle}} \begin{NewMacroBox}{tkzGetAngle}{\parg{name of macro}}% Assigns the value in degree of an angle to a macro. The value is positive and between $0^\circ$ and $360^\circ$. This macro retrieves \tkzcname{tkzAngleResult} and stores the result in a new macro. @@ -92,8 +88,8 @@ arguments & example & explanation \\ \midrule \TAline{name of macro} {\tkzcname{tkzGetAngle}\{ang\}}{\tkzcname{ang} contains the value of the angle.} \end{tabular} - \end{NewMacroBox} + This is an auxiliary macro that allows you to retrieve the result of the following macro \tkzcname{tkzFindAngle}. \subsection{Angle formed by three points} @@ -159,7 +155,6 @@ The measure is always positive and between $0^\circ$ and $360^\circ$. With the \end{tikzpicture} \end{tkzexample} - \subsubsection{Angle between two circles} We are looking for the angle formed by the tangents at a point of intersection @@ -169,9 +164,9 @@ We are looking for the angle formed by the tangents at a point of intersection fixed,precision=1} \tkzDefPoints{0/0/A,6/0/B,4/2/C} \tkzDrawCircles(A,C B,C) -\tkzDefTangent[at=C](A) \tkzGetPoint{a} +\tkzDefLine[tangent at=C](A) \tkzGetPoint{a} \tkzDefPointsBy[symmetry = center C](a){d} -\tkzDefTangent[at=C](B) \tkzGetPoint{b} +\tkzDefLine[tangent at=C](B) \tkzGetPoint{b} \tkzDrawLines[add=1 and 4](a,C C,b) \tkzFillAngle[fill=teal,opacity=.2% ,size=2](b,C,d) @@ -181,7 +176,6 @@ We are looking for the angle formed by the tangents at a point of intersection \end{tikzpicture} \end{tkzexample} - \subsection{Angle formed by a straight line with the horizontal axis \tkzcname{tkzFindSlopeAngle}} Much more interesting than the last one. The result is between -180 degrees and +180 degrees. @@ -265,5 +259,5 @@ Here is another version of the construction of a mediator $\pgfmathprintnumber{\SAD}^\circ$} \end{tikzpicture} \end{tkzexample} - + \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circleby.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circleby.tex index 4df2f613334..7af83e2aa1c 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circleby.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circleby.tex @@ -8,8 +8,6 @@ These transformations are: \item central symmetry; \item orthogonal projection; \item rotation (degrees); - \item orthogonal from ; - \item orthogonal through; \item inversion. \end{itemize} @@ -18,7 +16,7 @@ The choice of transformations is made through the options. The macro is \tkzcnam \tkzDefCircleBy[translation= from A to A'](O,M) \end{tkzltxexample} $O$ is the center and $M$ is a point on the circle. -The image is a circle. The new center is |tkzFirstPointResult| and |tkzSecondPointResult| is a point on the new circle. You can get the results with the macro \tkzcname{tkzGetPoints} . +The image is a circle. The new center is |tkzFirstPointResult| and |tkzSecondPointResult| is a point on the new circle. You can get the results with the macro \tkzcname{tkzGetPoints}. \medskip \begin{NewMacroBox}{tkzDefCircleBy}{\oarg{local options}\parg{pt1,pt2}}% The argument is a couple of points. The results is a couple of points. If you want to keep these points then the macro \tkzcname{tkzGetPoints\{O'\}\{M'\}} allows you to assign the name \tkzname{O'} to the center and \tkzname{M'} to the point on the circle. @@ -40,18 +38,15 @@ options & & examples \\ \TOline{symmetry } {= center \#1}{[symmetry=center A](O,M)} \TOline{projection }{= onto \#1--\#2}{[projection=onto A--B](O,M)} \TOline{rotation } {= center \#1 angle \#2}{[rotation=center O angle 30](O,M)} -\TOline{orthogonal from} {= \#1}{[orthogonal from = A ](O,M)} -\TOline{orthogonal through}{= \#1 and \#2}{[orthogonal through = A and B](O,M)} \TOline{inversion}{= center \#1 through \#2}{[inversion =center O through A](O,M)} % \TOline{inversion negative}{= center \#1 through \#2}{[inversion negative =center O through A](O,M)} \bottomrule \end{tabular} -The image is only defined and not drawn. +\medskip +\emph{The image is only defined and not drawn.} \end{NewMacroBox} -\subsubsection{Examples of transformations} - \subsubsection{\tkzname{Translation}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] @@ -67,7 +62,7 @@ The image is only defined and not drawn. \end{tikzpicture} \end{tkzexample} - \subsubsection{\tkzname{Reflection} (orthogonal symmetry)} +\subsubsection{\tkzname{Reflection} (orthogonal symmetry)} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] @@ -79,11 +74,10 @@ The image is only defined and not drawn. \tkzDrawLine[add =0 and 1][orange](A,B) \tkzDrawCircles(C,D C',D') \tkzLabelPoints[color=teal](A,B,C,C') - \tkzLabelPoints[color=teal,above](D,D') + \tkzLabelPoints[color=teal,right](D,D') \end{tikzpicture} \end{tkzexample} - \subsubsection{\tkzname{Homothety}} \begin{tkzexample}[latex=7cm,small] @@ -95,11 +89,10 @@ The image is only defined and not drawn. \tkzDrawPoints[teal](A,C,D,C',D') \tkzDrawCircles(C,D C',D') \tkzLabelPoints[color=teal](A,C,C') - \tkzLabelPoints[color=teal,above](D,D') + \tkzLabelPoints[color=teal,right](D,D') \end{tikzpicture} \end{tkzexample} - \subsubsection{\tkzname{Symmetry}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1] @@ -129,67 +122,11 @@ The image is only defined and not drawn. \end{tikzpicture} \end{tkzexample} - -\subsubsection{\tkzname{Orthogonal from}} -Orthogonal circle of given center. \tkzcname{tkzGetPoints\{z1\}\{z2\}} gives two points of the circle. - -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=.75] - \tkzDefPoints{0/0/O,1/0/A} - \tkzDefPoints{1.5/1.25/B,-2/-3/C} - \tkzDefCircleBy[orthogonal from=B](O,A) - \tkzGetPoints{z1}{z2} - \tkzDefCircleBy[orthogonal from=C](O,A) - \tkzGetPoints{t1}{t2} - \tkzDrawCircle(O,A) - \tkzDrawCircles[new](B,z1 C,t1) - \tkzDrawPoints(t1,t2,C) - \tkzDrawPoints(z1,z2,O,A,B) - \tkzLabelPoints(O,A,B,C) -\end{tikzpicture} -\end{tkzexample} - -\subsubsection{\tkzname{Orthogonal from} : Right angle between circles} -We are looking for a circle orthogonal to the given circle. - -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=.4] -\tkzDefPoints{0/0/A,6/0/B,4/2/D} -\tkzDefCircleBy[orthogonal from=B](A,D) -\tkzGetSecondPoint{C} -\tkzDrawCircles(A,C B,C) -\tkzDefTangent[at=C](A) \tkzGetPoint{a} -\tkzDefPointsBy[symmetry = center C](a){d} -\tkzDefTangent[at=C](B) \tkzGetPoint{b} -\tkzDrawLines[add=1 and 4](a,C C,b) -\tkzDrawSegments(A,C B,C) -\tkzMarkRightAngle[fill=teal,opacity=.2,size=1](b,C,d) -\end{tikzpicture} -\end{tkzexample} - - \subsubsection{\tkzname{Orthogonal through}} -Orthogonal circle passing through two given points. -\begin{tkzexample}[latex=6cm,small] -\begin{tikzpicture}[scale=1] - \tkzDefPoint(0,0){O} - \tkzDefPoint(1,0){A} - \tkzDrawCircle(O,A) - \tkzDefPoint(-1.5,-1.5){z1} - \tkzDefPoint(1.5,-1.25){z2} - \tkzDefCircleBy[orthogonal through=z1 and z2](O,A) - \tkzGetPoint{c} - \tkzDrawCircle[new](tkzPointResult,z1) - \tkzDrawPoints[new](O,A,z1,z2,c) - \tkzLabelPoints(O,A,z1,z2,c) -\end{tikzpicture} -\end{tkzexample} - - \subsubsection{\tkzname{Inversion}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1.5] -\tkzSetUpPoint[size=4,color=red,fill=red!20] +\tkzSetUpPoint[size=3,color=red,fill=red!20] \tkzSetUpStyle[color=purple,ultra thin]{st1} \tkzSetUpStyle[color=cyan,ultra thin]{st2} \tkzDefPoint(2,0){A} \tkzDefPoint(3,0){B} @@ -204,5 +141,4 @@ Orthogonal circle passing through two given points. \end{tikzpicture} \end{tkzexample} - \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circles.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circles.tex index e0d1ccd6feb..72219d5ef5e 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circles.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-circles.tex @@ -10,8 +10,7 @@ Among the following macros, one will allow you to draw a circle, which is not a \item then a macro that allows you to color in a disc, but without drawing the circle \tkzcname{tkzFillCircle}; \item sometimes, it is necessary for a drawing to be contained in a disk, this is the role assigned to \tkzcname{tkzClipCircle}; - - + \item it finally remains to be able to give a label to designate a circle and if several possibilities are offered, we will see here \tkzcname{tkzLabelCircle}. \end{itemize} @@ -20,7 +19,7 @@ Among the following macros, one will allow you to draw a circle, which is not a This macro allows you to retrieve the characteristics (center and radius) of certain circles. \begin{NewMacroBox}{tkzDefCircle}{\oarg{local options}\parg{A,B} or \parg{A,B,C}}% -\tkzHandBomb\ Attention the arguments are lists of two or three points. This macro is either used in partnership with \\ \tkzcname{tkzGetPoint} and/or \tkzcname{tkzGetLength} to obtain the center and the radius of the circle, or by using \\ \tkzname{tkzPointResult} and \tkzname{tkzLengthResult} if it is not necessary to keep the results. +\tkzHandBomb\ Attention the arguments are lists of two or three points. This macro is either used in partnership with \\ \tkzcname{tkzGetPoints} to obtain the center and a point on the circle, or by using \\ \tkzname{tkzFirstPointResult} and \tkzname{tkzSecondPointResult} if it is not necessary to keep the results. You can also use \tkzcname{tkzGetLength} to get the radius. \medskip \begin{tabular}{lll}% @@ -36,48 +35,28 @@ arguments & example & explanation \\ \toprule options & default & definition \\ \midrule -\TOline{through} {through}{circle characterized by two points defining a radius} -\TOline{diameter} {through}{circle characterized by two points defining a diameter} -\TOline{circum} {through}{circle circumscribed of a triangle} -\TOline{in} {through}{incircle a triangle} -\TOline{ex} {through}{excircle of a triangle} -\TOline{euler or nine}{through}{Euler's Circle} -\TOline{spieker} {through}{Spieker Circle} -\TOline{apollonius} {through}{circle of Apollonius} +\TOline{R} {circum}{circle characterized by a center and a radius} +\TOline{diameter}{circum}{circle characterized by two points defining a diameter} +\TOline{circum} {circum}{circle circumscribed of a triangle} +\TOline{in} {circum}{incircle a triangle} +\TOline{ex} {circum}{excircle of a triangle} +\TOline{euler or nine}{circum}{Euler's Circle} +\TOline{spieker} {circum}{Spieker Circle} +\TOline{apollonius} {circum}{circle of Apollonius} +\TOline{orthogonal from} {circum}{[orthogonal from = A ](O,M)} +\TOline{orthogonal through}{circum}{[orthogonal through = A and B](O,M)} \TOline{K} {1}{coefficient used for a circle of Apollonius} \bottomrule \end{tabular} -{In the following examples, I draw the circles with a macro not yet presented, but this is not necessary. In some cases you may only need the center or the radius.} +\medskip +\emph{In the following examples, I draw the circles with a macro not yet presented. You may only need the center and a point on the circle. } \end{NewMacroBox} - \subsubsection{Example with a random point and option \tkzname{through}} - -\begin{tkzexample}[latex=7 cm,small] -\begin{tikzpicture}[scale=1] - \tkzDefPoint(0,4){A} - \tkzDefPoint(2,2){B} - \tkzDefMidPoint(A,B) \tkzGetPoint{I} - \tkzDefRandPointOn[segment = I--B] - \tkzGetPoint{C} - \tkzDefCircle[through](A,C) - \tkzGetLength{rACcm} - \tkzcmtopt(\rACcm){rACpt} - \tkzDrawCircle(A,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B,C) - \tkzLabelCircle[draw, - text width=3cm,text centered, - font=\scriptsize,below=1cm](A,C)(-90)% - {The radius measurement is: - \rACcm cm i.e. \rACpt pt} -\end{tikzpicture} - \end{tkzexample} - \subsubsection{Example with option \tkzname{diameter}} - It is simpler here to search directly for the middle of $[AB]$. - \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture}[scale=1] + It is simpler here to search directly for the middle of $[AB]$. The result is the center and if necessary +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=1] \tkzDefPoint(0,0){A} \tkzDefPoint(2,2){B} \tkzDefCircle[diameter](A,B) @@ -86,20 +65,20 @@ options & default & definition \\ \tkzDrawSegment(A,B) \tkzDrawPoints(A,B,O) \tkzLabelPoints[below](A,B,O) - \end{tikzpicture} - \end{tkzexample} +\end{tikzpicture} +\end{tkzexample} - \subsubsection{Circles inscribed and circumscribed for a given triangle} +\subsubsection{Circles inscribed and circumscribed for a given triangle} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(2,2){A} \tkzDefPoint(5,-2){B} \tkzDefPoint(1,-2){C} \tkzDefCircle[in](A,B,C) - \tkzGetPoint{I} \tkzGetLength{rIN} + \tkzGetPoints{I}{x} \tkzDefCircle[circum](A,B,C) - \tkzGetPoint{K} \tkzGetLength{rCI} - \tkzDrawCircles[R,new](I,{\rIN} K,{\rCI}) + \tkzGetPoint{K} + \tkzDrawCircles[new](I,x K,A) \tkzLabelPoints[below](B,C) \tkzLabelPoints[above left](A,I,K) \tkzDrawPolygon(A,B,C) @@ -107,42 +86,39 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} - \subsubsection{Example with option \tkzname{ex}} +\subsubsection{Example with option \tkzname{ex}} We want to define an excircle of a triangle relatively to point $C$ \begin{tkzexample}[latex=8cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoints{ 0/0/A,4/0/B,0.8/4/C} \tkzDefCircle[ex](B,C,A) - \tkzGetPoint{J_c} \tkzGetLength{rc} + \tkzGetPoints{J_c}{h} \tkzDefPointBy[projection=onto A--C ](J_c) \tkzGetPoint{X_c} \tkzDefPointBy[projection=onto A--B ](J_c) \tkzGetPoint{Y_c} + \tkzDefCircle[in](A,B,C) + \tkzGetPoints{I}{y} + \tkzDrawCircles[color=lightgray](J_c,h I,y) + \tkzDefPointBy[projection=onto A--C ](I) + \tkzGetPoint{F} + \tkzDefPointBy[projection=onto A--B ](I) + \tkzGetPoint{D} \tkzDrawPolygon(A,B,C) - \tkzDrawCircle[R,color=lightgray](J_c,\rc) - % possible \tkzDrawCircle[ex](A,B,C) - \tkzDrawCircle[in,new](A,B,C) - \tkzGetPoint{I} - \tkzDefPointBy[projection=onto A--C ](I) - \tkzGetPoint{F} - \tkzDefPointBy[projection=onto A--B ](I) - \tkzGetPoint{D} - \tkzDrawLines[add=0 and 2.2,dashed](C,A C,B) - \tkzDrawSegments[dashed](J_c,X_c I,D I,F% - J_c,Y_c) - \tkzMarkRightAngles(A,F,I B,D,I J_c,X_c,A% - J_c,Y_c,B) + \tkzDrawLines[add=0 and 1.5](C,A C,B) + \tkzDrawSegments(J_c,X_c I,D I,F J_c,Y_c) + \tkzMarkRightAngles(A,F,I B,D,I J_c,X_c,A J_c,Y_c,B) \tkzDrawPoints(B,C,A,I,D,F,X_c,J_c,Y_c) - \tkzLabelPoints(B,A,J_c,I,D,X_c,Y_c) + \tkzLabelPoints(B,A,J_c,I,D) + \tkzLabelPoints[above](Y_c) + \tkzLabelPoints[left](X_c) \tkzLabelPoints[above left](C) \tkzLabelPoints[left](F) -\end{tikzpicture} +\end{tikzpicture} \end{tkzexample} - - - \subsubsection{Euler's circle for a given triangle with option \tkzname{euler}} +\subsubsection{Euler's circle for a given triangle with option \tkzname{euler}} We verify that this circle passes through the middle of each side. \begin{tkzexample}[latex=6cm,small] @@ -150,31 +126,30 @@ We verify that this circle passes through the middle of each side. \tkzDefPoint(5,3.5){A} \tkzDefPoint(0,0){B} \tkzDefPoint(7,0){C} \tkzDefCircle[euler](A,B,C) - \tkzGetPoint{E} \tkzGetLength{rEuler} + \tkzGetPoints{E}{e} \tkzDefSpcTriangle[medial](A,B,C){M_a,M_b,M_c} + \tkzDrawCircle[new](E,e) \tkzDrawPoints(A,B,C,E,M_a,M_b,M_c) - \tkzDrawCircle[R](E,\rEuler) \tkzDrawPolygon(A,B,C) \tkzLabelPoints[below](B,C) \tkzLabelPoints[left](A,E) \end{tikzpicture} \end{tkzexample} - \subsubsection{Apollonius circles for a given segment option \tkzname{apollonius}} +\subsubsection{Apollonius circles for a given segment option \tkzname{apollonius}} \begin{tkzexample}[latex=9cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} \tkzDefCircle[apollonius,K=2](A,B) - \tkzGetPoint{K1} - \tkzGetLength{rAp} - \tkzDrawCircle[R,color = teal!50!black, - fill=teal!20,opacity=.4](K1,\rAp) + \tkzGetPoints{K1}{x} + \tkzDrawCircle[color = teal!50!black, + fill=teal!20,opacity=.4](K1,x) \tkzDefCircle[apollonius,K=3](A,B) - \tkzGetPoint{K2} \tkzGetLength{rAp} - \tkzDrawCircle[R,color=orange!50, - fill=orange!20,opacity=.4](K2,\rAp) + \tkzGetPoints{K2}{y} + \tkzDrawCircle[color=orange!50, + fill=orange!20,opacity=.4](K2,y) \tkzLabelPoints[below](A,B,K1,K2) \tkzDrawPoints(A,B,K1,K2) \tkzDrawLine[add=.2 and 1](A,B) @@ -191,30 +166,22 @@ We verify that this circle passes through the middle of each side. \tkzDefPoint(0,0){A} \tkzDefPoint(3,0){B} \tkzDefPoint(1,2.5){C} - \tkzDefCircle[ex](A,B,C) \tkzGetPoint{I} - \tkzGetLength{rI} - \tkzDefCircle[ex](C,A,B) \tkzGetPoint{J} - \tkzGetLength{rJ} - \tkzDefCircle[ex](B,C,A) \tkzGetPoint{K} - \tkzGetLength{rK} - \tkzDefCircle[in](B,C,A) \tkzGetPoint{O} - \tkzGetLength{rO} + \tkzDefCircle[ex](A,B,C) \tkzGetPoints{I}{i} + \tkzDefCircle[ex](C,A,B) \tkzGetPoints{J}{j} + \tkzDefCircle[ex](B,C,A) \tkzGetPoints{K}{k} + \tkzDefCircle[in](B,C,A) \tkzGetPoints{O}{o} + \tkzDrawCircles[new](J,j I,i K,k O,o) \tkzDrawLines[add=1.5 and 1.5](A,B A,C B,C) - \tkzDrawPoints(I,J,K) - \tkzDrawPolygon(A,B,C) - \tkzDrawPolygon[dashed](I,J,K) - \tkzDrawCircle[R,teal](O,\rO) - \tkzDrawSegments[dashed](A,K B,J C,I) + \tkzDrawPolygon[purple](I,J,K) + \tkzDrawSegments[new](A,K B,J C,I) \tkzDrawPoints(A,B,C) - \tkzDrawCircles[R,new](J,{\rJ} I,{\rI}% - K,{\rK}) + \tkzDrawPoints[new](I,J,K) \tkzLabelPoints(A,B,C,I,J,K) \end{tikzpicture} \end{tkzexample} - \subsubsection{Spieker circle with option \tkzname{spieker}} -The incircle of the medial triangle $M_aM_bM_c$ is the Spieker circle: - +\subsubsection{Spieker circle with option \tkzname{spieker}} +The incircle of the medial triangle $M_aM_bM_c$ is the Spieker circle: \begin{tkzexample}[latex=6cm, small] \begin{tikzpicture}[scale=1] @@ -225,112 +192,16 @@ The incircle of the medial triangle $M_aM_bM_c$ is the Spieker circle: \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[cyan](M_a,M_b,M_c) \tkzDrawPoints(B,C,A) + \tkzDefCircle[spieker](A,B,C) \tkzDrawPoints[new](M_a,M_b,M_c,S_p) - \tkzDrawCircle[in,new](M_a,M_b,M_c) - \tkzAutoLabelPoints[center=S_p,dist=.3](M_a,M_b,M_c) - \tkzLabelPoints[right](S_p) - \tkzAutoLabelPoints[center=S_p](A,B,C) + \tkzDrawCircle[new](tkzFirstPointResult,tkzSecondPointResult) + \tkzLabelPoints[right](M_a) + \tkzLabelPoints[left](M_b) + \tkzLabelPoints[below](A,B,M_c,S_p) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} - \subsubsection{Examples from js bibra tex.stackexchange.com} - -\begin{tikzpicture}[scale=0.4] -\tkzDefPoint(6,4){A} -\tkzDefPoint(6,-4){B} -\tkzDefMidPoint(B,A)\tkzGetPoint{P} -\tkzDefLine[orthogonal =through P](A,B)\tkzGetPoint{X} -\tkzDefCircle[through](X,P) -\tkzCalcLength(X,P)\tkzGetLength{rXP} -\tkzDefShiftPoint[X](180:\rXP*2){y} -\tkzDefPointWith[linear,K=0.3](y,P) \tkzGetPoint{x} -\tkzDrawPoints(X,x) -\tkzDrawCircles(x,P X,P) -\tkzLabelLine[pos=0.5,above](x,P){r1} -\tkzDefShiftPoint[X](-60:\rXP){X'} -\tkzDrawSegments[<->, >=triangle 45](X,X' P,x) -\tkzLabelLine[pos=0.5,above, sloped](X,X'){r} -\tkzLabelPoints[above](x) -\tkzLabelPoints[above](X) -\end{tikzpicture} - -\begin{tkzexample}[code only, small] -\begin{tikzpicture}[scale=0.4] -\tkzDefPoint(6,4){A} -\tkzDefPoint(6,-4){B} -\tkzDefMidPoint(B,A)\tkzGetPoint{P} -\tkzDefLine[orthogonal =through P](A,B) -\tkzGetPoint{X} -\tkzDefCircle[through](X,P) -\tkzCalcLength(X,P)\tkzGetLength{rXP} -\tkzDefShiftPoint[X](180:\rXP*2){y} -\tkzDefPointWith[linear,K=0.3](y,P) - \tkzGetPoint{x} -\tkzDrawPoints(X,x) -\tkzDrawCircles(x,P X,P) -\tkzLabelLine[pos=0.5,above](x,P){r1} -\tkzDefShiftPoint[X](-60:\rXP){X'} -\tkzDrawSegments[<->, >=triangle 45](X,X' P,x) -\tkzLabelLine[pos=0.5,above, sloped](X,X'){r} -\tkzLabelPoints[above](x) -\tkzLabelPoints[above](X) -\end{tikzpicture} -\end{tkzexample} - -\begin{tikzpicture} - \tkzDefPoint(0,4){A} - \tkzDefPoint(2,2){B} - \tkzDefMidPoint(B,A)\tkzGetPoint{P} - \tkzDefLine[orthogonal =through P](B,A) - \tkzGetPoint{X} - \tkzDefCircle[through](X,P) - \tkzGetLength{rXPpt} - \tkzpttocm(\rXPpt){rXPcm} - \tkzDefPointWith[linear,K=0.3](X,P) - \tkzGetPoint{x} - \tkzDefCircle[through](x,P) - \tkzGetLength{rxPpt} - \tkzpttocm(\rxPpt){rxPcm} - \tkzDrawCircles(X,P x,P) - \tkzDrawPoints(X,x) - \tkzDrawSegment[<->, >=triangle 45](x,P) - \tkzDrawSegment(P,X) - \tkzLabelPoints(X,x) - \tkzLabelLine[pos=0.5,left](x,P){r} - \tkzCalcLength[cm](X,P)\tkzGetLength{rXP} - \tkzDefShiftPoint[X](-90:\rXP){y} - \tkzDrawSegments[<->, >=triangle 45](X,y) - \tkzLabelLine[pos=0.5,left](X,y){R} -\end{tikzpicture} - -\begin{tkzexample}[code only, small] -\begin{tikzpicture} - \tkzDefPoint(0,4){A} - \tkzDefPoint(2,2){B} - \tkzDefMidPoint(B,A)\tkzGetPoint{P} - \tkzDefLine[orthogonal =through P](B,A) - \tkzGetPoint{X} - \tkzDefCircle[through](X,P) - \tkzGetLength{rXPpt} - \tkzpttocm(\rXPpt){rXPcm} - \tkzDefPointWith[linear,K=0.3](X,P) - \tkzGetPoint{x} - \tkzDefCircle[through](x,P) - \tkzGetLength{rxPpt} - \tkzpttocm(\rxPpt){rxPcm} - \tkzDrawCircles(X,P x,P) - \tkzDrawPoints(X,x) - \tkzDrawSegment[<->, >=triangle 45](x,P) - \tkzDrawSegment(P,X) - \tkzLabelPoints(X,x) - \tkzLabelLine[pos=0.5,left](x,P){r} - \tkzCalcLength[cm](X,P)\tkzGetLength{rXP} - \tkzDefShiftPoint[X](-90:\rXP){y} - \tkzDrawSegments[<->, >=triangle 45](X,y) - \tkzLabelLine[pos=0.5,left](X,y){R} -\end{tikzpicture} -\end{tkzexample} - \subsection{Projection of excenters} \begin{NewMacroBox}{tkzDefProjExcenter}{\oarg{local options}\parg{A,B,C}\parg{a,b,c}\marg{X,Y,Z}}% @@ -354,8 +225,9 @@ arguments & default & definition \\ \medskip \end{NewMacroBox} -\subsubsection{Excircles} +\subsubsection{\tkzname{Excircles}} +\begin{tkzexample}[vbox,small] \begin{tikzpicture}[scale=.6] \tikzset{line style/.append style={line width=.2pt}} \tikzset{label style/.append style={color=teal,font=\footnotesize}} @@ -363,7 +235,6 @@ arguments & default & definition \\ \tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} \tkzDefSpcTriangle[intouch,name=I](A,B,C){a,b,c} \tkzDefProjExcenter[name=J](A,B,C)(a,b,c){X,Y,Z} - \tkzDefCircle[in](A,B,C) \tkzGetPoint{I} \tkzGetSecondPoint{T} \tkzDrawCircles[red](Ja,Xa Jb,Yb Jc,Zc) \tkzDrawCircle(I,T) @@ -373,48 +244,52 @@ arguments & default & definition \\ Jb,Xb Jb,Yb Jb,Zb Jc,Xc Jc,Yc Jc,Zc I,Ia I,Ib I,Ic) -\tkzMarkRightAngles[size=.2,fill=gray!15](Ja,Za,B Ja,Xa,B Ja,Ya,C Jb,Yb,C Jb,Zb,B Jb,Xb,C Jc,Yc,A Jc,Zc,B Jc,Xc,C I,Ia,B I,Ib,C I,Ic,A) +\tkzMarkRightAngles[size=.2,fill=gray!15](Ja,Za,B Ja,Xa,B Ja,Ya,C Jb,Yb,C) +\tkzMarkRightAngles[size=.2,fill=gray!15](Jb,Zb,B Jb,Xb,C Jc,Yc,A Jc,Zc,B) Jc,Xc,C I,Ia,B I,Ib,C I,Ic,A) \tkzDrawSegments[blue](Jc,C Ja,A Jb,B) -\tkzLabelPoints(A,Yc,Ya,Yb,Ja,I,Zc) -\tkzLabelPoints[left](Jb,Ib) -\tkzLabelPoints[below](Zb,Ic,Jc,B,Za) -\tkzLabelPoints[above right](C) -\tkzLabelPoints[right](Xb,Ia,Xa,Xc) -\end{tikzpicture} +\tkzDrawPoints(A,B,C,Xa,Xb,Xc,Ja,Jb,Jc,Ia,Ib,Ic,Ya,Yb,Yc,Za,Zb,Zc) +\tkzLabelPoints(A,Ya,Yb,Ja,I) +\tkzLabelPoints[left](Jb,Ib,Yc) +\tkzLabelPoints[below](Zb,Ic,Jc,B,Za,Xa) +\tkzLabelPoints[above right](C,Zc,Yb) +\tkzLabelPoints[right](Xb,Ia,Xc) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{\tkzname{Orthogonal from}} +Orthogonal circle of given center. \tkzcname{tkzGetPoints\{z1\}\{z2\}} gives two points of the circle. -\begin{tkzexample}[code only,small] -\begin{tikzpicture}[scale=.6] -\tikzset{line style/.append style={line width=.2pt}} -\tikzset{label style/.append style={color=teal,font=\footnotesize}} -\tkzDefPoints{0/0/A,5/0/B,0.8/4/C} -\tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} -\tkzDefSpcTriangle[intouch,name=I](A,B,C){a,b,c} -\tkzDefProjExcenter[name=J](A,B,C)(a,b,c){X,Y,Z} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/O,1/0/A} + \tkzDefPoints{1.5/1.25/B,-2/-3/C} + \tkzDefCircle[orthogonal from=B](O,A) + \tkzGetPoints{z1}{z2} + \tkzDefCircle[orthogonal from=C](O,A) + \tkzGetPoints{t1}{t2} + \tkzDrawCircle(O,A) + \tkzDrawCircles[new](B,z1 C,t1) + \tkzDrawPoints(t1,t2,C) + \tkzDrawPoints(z1,z2,O,A,B) + \tkzLabelPoints[right](O,A,B,C) +\end{tikzpicture} +\end{tkzexample} -\tkzDefCircle[in](A,B,C) \tkzGetPoint{I} \tkzGetSecondPoint{T} -\tkzDrawCircles[red](Ja,Xa Jb,Yb Jc,Zc) -\tkzDrawCircle(I,T) -\tkzDrawPolygon[dashed,color=blue](Ja,Jb,Jc) -\tkzDrawLines[add=1.5 and 1.5](A,C A,B B,C) -\tkzDrawSegments(Ja,Xa Ja,Ya Ja,Za - Jb,Xb Jb,Yb Jb,Zb - Jc,Xc Jc,Yc Jc,Zc - I,Ia I,Ib I,Ic) -\tkzMarkRightAngles[size=.2,fill=gray!15](% - Ja,Za,B Ja,Xa,B - Ja,Ya,C Jb,Yb,C - Jb,Zb,B Jb,Xb,C - Jc,Yc,A Jc,Zc,B - Jc,Xc,C I,Ia,B - I,Ib,C I,Ic,A) -\tkzDrawSegments[blue](Jc,C Ja,A Jb,B) -\tkzLabelPoints(A,Yc,Ya,Yb,Ja,I,Zc) -\tkzLabelPoints[left](Jb,Ib) -\tkzLabelPoints[below](Zb,Ic,Jc,B,Za) -\tkzLabelPoints[above right](C) -\tkzLabelPoints[right](Xb,Ia,Xa,Xc) -\end{tikzpicture} +\subsubsection{\tkzname{Orthogonal through}} +Orthogonal circle passing through two given points. +\begin{tkzexample}[latex=6cm,small] +\begin{tikzpicture}[scale=1] + \tkzDefPoint(0,0){O} + \tkzDefPoint(1,0){A} + \tkzDrawCircle(O,A) + \tkzDefPoint(-1.5,-1.5){z1} + \tkzDefPoint(1.5,-1.25){z2} + \tkzDefCircle[orthogonal through=z1 and z2](O,A) + \tkzGetPoint{c} + \tkzDrawCircle[new](tkzPointResult,z1) + \tkzDrawPoints[new](O,A,z1,z2,c) + \tkzLabelPoints[right](O,A,z1,z2,c) +\end{tikzpicture} \end{tkzexample} - \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-clipping.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-clipping.tex index 342e0024abd..430c8605ccf 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-clipping.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-clipping.tex @@ -114,10 +114,12 @@ This macro displays the bounding box. A rectangular frame surrounds the bounding \tkzDefPoint(3,0){A} \begin{scope} \tkzClipBB - \tkzDrawCircle[R](A,5) + \tkzDefCircle[R](A,5) \tkzGetPoint{a} + \tkzDrawCircle(A,a) \tkzShowBB[line width = 4pt,fill=teal!10,opacity=.4] \end{scope} -\tkzDrawCircle[R,red](A,4) +\tkzDefCircle[R](A,4) \tkzGetPoint{b} +\tkzDrawCircle[red](A,b) \end{tikzpicture} \end{tkzexample} %<---------------------------------------------------------------------------> @@ -219,23 +221,20 @@ options & default & definition \\ \tkzDefPointBy[symmetry=center K](B) \tkzGetPoint{M} \tkzClipPolygon(B,C,D,A) - \tkzCalcLength(M,I) \tkzGetLength{dMI} \tkzFillPolygon[color = orange](A,B,C,D) - \tkzFillCircle[R,color = yellow](M,\dMI) - \tkzFillCircle[R,color = blue!50!black](F,4) + \tkzFillCircle[color = yellow](M,I) + \tkzFillCircle[color = blue!50!black](F,D) \end{tikzpicture} \end{tkzexample} - - \subsection{Clipping a disc} -\begin{NewMacroBox}{tkzClipCircle}{\oarg{local options}\parg{A,B} or \parg{A,r}}% +\begin{NewMacroBox}{tkzClipCircle}{\oarg{local options}\parg{A,B}}% \begin{tabular}{lll}% \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{A,B} or \parg{A,r}}{\parg{A,B} or \parg{A,2cm}} {AB radius or diameter } +\TAline{\parg{A,B}}{\parg{A,B}} {AB radius} \bottomrule \end{tabular} @@ -243,8 +242,6 @@ arguments & example & explanation \\ \begin{tabular}{lll}% options & default & definition \\ \midrule -\TOline{radius} {radius}{circle characterized by two points defining a radius} -\TOline{R} {radius}{circle characterized by a point and the measurement of a radius } \TOline{out} {} {allows to clip the outside of the object} \bottomrule \end{tabular} @@ -267,7 +264,6 @@ It is not necessary to put \tkzname{radius} because that is the default option. \end{tikzpicture} \end{tkzexample} - \subsection{Clip out} \begin{tkzexample}[latex=6cm,small] @@ -276,10 +272,10 @@ It is not necessary to put \tkzname{radius} because that is the default option. \tkzDefPoint(0,0){O} \tkzDefPoint(-4,-2){A} \tkzDefPoint(3,1){B} - \tkzDrawCircle[R](O,2) + \tkzDefCircle[R](O,2) \tkzGetPoint{o} \tkzDrawPoints(A,B) % to have a good bounding box \begin{scope} - \tkzClipCircle[out,R](O,2) + \tkzClipCircle[out](O,o) \tkzDrawLines(A,B) \end{scope} \end{tikzpicture} @@ -298,11 +294,8 @@ It is not necessary to put \tkzname{radius} because that is the default option. \end{tikzpicture} \end{tkzexample} - see a more complex example about clipping here : \ref{About clipping circles} - - \subsection{Clipping a sector} \tkzHandBomb\ Attention the arguments vary according to the options. \begin{NewMacroBox}{tkzClipSector}{\oarg{local options}\parg{O,\dots}\parg{\dots}}% @@ -372,7 +365,8 @@ options & arguments & example \\ \tkzDrawSector[new](O,B)(A) \begin{scope} \tkzClipSector(O,B)(A) -\tkzDrawSquare[color=teal,fill=teal!20](O,B) +\tkzDefSquare(O,B) \tkzGetPoints{B'}{O'} +\tkzDrawPolygon[color=teal,fill=teal!20](O,B,B',O') \end{scope} \tkzDrawPoints(A,B,O) \end{tikzpicture} @@ -411,25 +405,23 @@ In order to use this option, a bounding box must be defined. -- cycle} }} \end{tkzltxexample} - \subsubsection{Example with \tkzcname{tkzClipPolygon[out]}} \tkzcname{tkzClipPolygon[out]}, \tkzcname{tkzClipCircle[out]} use this option. \begin{tkzexample}[vbox,small] -\fbox{\begin{tikzpicture}[scale=1] +\begin{tikzpicture}[scale=1] \tkzInit[xmin=-5,xmax=5,ymin=-4,ymax=6] \tkzClip - \tkzDefPoints{-.5/0/P1,.5/0/P2} - \foreach \i [count=\j from 3] in {2,...,7}{% - \tkzDefShiftPoint[P\i]({45*(\i-1)}:1){P\j}} - \tkzClipPolygon[out](P1,P...,P8) - \tkzCalcLength(P1,P5)\tkzGetLength{r} - \begin{scope}[blend group=screen] - \foreach \i in {1,...,8}{% - \pgfmathparse{100-5*\i} - \tkzFillCircle[R,color=teal!% - \pgfmathresult](P\i,\r)} - \end{scope} -\end{tikzpicture}} +\tkzDefPoints{-.5/0/P1,.5/0/P2} +\foreach \i [count=\j from 3] in {2,...,7}{% + \tkzDefShiftPoint[P\i]({45*(\i-1)}:1){P\j}} +\tkzClipPolygon[out](P1,P...,P8) +\tkzCalcLength(P1,P5)\tkzGetLength{r} +\begin{scope}[blend group=screen] + \foreach \i in {1,...,8}{% + \tkzDefCircle[R](P\i,\r) \tkzGetPoint{x} + \tkzFillCircle[color=teal](P\i,x)} + \end{scope} +\end{tikzpicture} \end{tkzexample} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-compass.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-compass.tex index 47402266221..088d39f8b00 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-compass.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-compass.tex @@ -59,6 +59,10 @@ options & default & definition \\ \end{tabular} \end{NewMacroBox} +\subsubsection{Use \tkzcname{tkzCompasss}} % (fold) +\label{ssub:use_tkzcname_tkzcompasss} + +% subsubsection use_tkzcname_tkzcompasss (end) \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(2,2){A} \tkzDefPoint(5,-2){B} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-documentation.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-documentation.tex new file mode 100644 index 00000000000..a18455139cb --- /dev/null +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-documentation.tex @@ -0,0 +1,29 @@ +\section{About this documentation and the examples} + +It is obtained by compiling with "lualatex". I use a class \tkzname{doc.cls} based on \tkzname{scrartcl}. + +Below the list of styles used in the docuimentation. To understand how to use the styles see the section \ref{custom} + +|\tkzSetUpColors[background=white,text=black] | + +|\tkzSetUpCompass[color=orange, line width=.2pt,delta=10]| + +|\tkzSetUpArc[color=gray,line width=.2pt]| + +|\tkzSetUpPoint[size=2,color=teal]| + +|\tkzSetUpLine[line width=.2pt,color=teal]| + +|\tkzSetUpStyle[color=orange,line width=.2pt]{new}| + +|\tikzset{every picture/.style={line width=.2pt}}| + +|\tikzset{label angle style/.append style={color=teal,font=\footnotesize}}| + + +|\tikzset{label style/.append style={below,color=teal,font=\scriptsize}}| + +Some examples use predefined styles like + + +|\tikzset{new/.style={color=orange,line width=.2pt}} |
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-drawing.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-drawing.tex index 8f8b72d95fa..763227ddba7 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-drawing.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-drawing.tex @@ -88,7 +88,6 @@ options & default & definition \\ \tkzHandBomb\ Beware of the final "s", an oversight leads to cascading errors if you try to draw multiple points. The options are the same as for the previous macro. \end{NewMacroBox} - \subsubsection{Example} \begin{tkzexample}[latex=7cm,small] @@ -97,18 +96,14 @@ options & default & definition \\ \tkzDrawPoints[size=3,color=red,fill=red!50](A,B,C) \end{tikzpicture} \end{tkzexample} - - %<----------------------------------------------------------------------------> % LINE(S) %<----------------------------------------------------------------------------> - \section{Drawing the lines} The following macros are simply used to draw, name lines. \subsection{Draw a straight line} To draw a normal straight line, just give a couple of points. You can use the \tkzname{add} option to extend the line (This option is due to \tkzimp{Mark Wibrow}, see the code below). - The style of a line is by default : \begin{tkzltxexample}[] @@ -182,11 +177,9 @@ Arguments are a list of pairs of points separated by spaces. The styles of \TI \tkzLabelPoints(A,B,C,D) \end{tikzpicture} \end{tkzexample} - %<----------------------------------------------------------------------------> % SEGMENT(S) %<----------------------------------------------------------------------------> - \section{Drawing a segment} There is, of course, a macro to simply draw a segment. @@ -230,11 +223,12 @@ This is of course equivalent to \tkzcname{draw (A)--(B);}. You can also use the \subsubsection{Example of extending an segment with option \tkzname{add}} \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture} +\begin{tikzpicture} \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} \tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{E} - \tkzDrawCircle[euler,red](A,B,C) + \tkzDefCircle[euler](A,B,C)\tkzGetPoints{E}{e} + \tkzDrawCircle[red](E,e) \tkzDrawLines[add=.5 and .5](A,B A,C B,C) \tkzDrawPoints(A,B,C,E) \tkzLabelPoints(A,B,C,E) @@ -254,7 +248,6 @@ I'll let you look at the examples to see what you can do with these styles. dim fence style/.style={dashed}] \end{verbatim} - \begin{tkzexample}[latex=7cm] \begin{tikzpicture}[scale=.75] \tkzDefPoints{0/3/A, 1/-3/B} @@ -273,7 +266,6 @@ I'll let you look at the examples to see what you can do with these styles. \end{tikzpicture} \end{tkzexample} - \subsubsection{Adding dimensions with option \tkzname{dim} partI} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=2] @@ -282,8 +274,8 @@ I'll let you look at the examples to see what you can do with these styles. \tkzDefPoint(3.07,0){B} \tkzInterCC[R](A,2.37)(B,1.82) \tkzGetPoints{C}{C'} -\tkzDrawCircle[in](A,B,C) \tkzGetPoint{G} -\tkzGetLength{rIn} +\tkzDefCircle[in](A,B,C) \tkzGetPoints{G}{g} +\tkzDrawCircle(G,g) \tkzDrawPolygon(A,B,C) \tkzDrawPoints(A,B,C) \tkzCalcLength(A,B)\tkzGetLength{ABl} @@ -307,11 +299,11 @@ I'll let you look at the examples to see what you can do with these styles. \tkzDrawPolygon(C,...,F) \tkzDrawSegments(A,B) \tkzDrawPoints(A,...,F,O) - \tkzLabelPoints(A,...,F,O) - \tkzDrawSegment[dim={ $\sqrt{5}$,2cm,}](C,E) - \tkzDrawSegment[dim={ $\frac{\sqrt{5}}{2}$,1cm,}](O,E) - \tkzDrawSegment[dim={ $2$,2cm,left=8pt}](F,C) - \tkzDrawSegment[dim={ $1$,1cm,left=8pt}](F,A) + \tkzLabelPoints[below left](A,...,F,O) + \tkzDrawSegment[dim={ $\sqrt{5}$,2cm,}](C,E) + \tkzDrawSegment[dim={ $\frac{\sqrt{5}}{2}$,1cm,}](O,E) + \tkzDrawSegment[dim={ $2$,2cm,left=8pt}](F,C) + \tkzDrawSegment[dim={ $1$,1cm,left=8pt}](F,A) \end{tikzpicture} \end{tkzexample} @@ -391,7 +383,7 @@ Just give a list of points and the macro plots the polygon using the \TIKZ\ opti arguments & example & explanation \\ \midrule \TAline{\parg{pt1,pt2,pt3,...}}{|\BS tkzDrawPolygon[gray,dashed](A,B,C)|}{Drawing a triangle} - \end{tabular} +\end{tabular} \medskip \begin{tabular}{lll}% @@ -438,7 +430,8 @@ options & default & example \\ \tkzDrawPolygon[teal!80, line join=round](p0,p2,p4) \tkzDrawSegments(m1,p3 m3,p5 m5,p1) -\tkzDrawCircle[teal,R](O,4.8) +\tkzDefCircle[R](O,4.8)\tkzGetPoint{o} +\tkzDrawCircle[teal](O,o) \end{tikzpicture} \end{tkzexample} @@ -451,7 +444,7 @@ Just give a list of points and the macro plots the polygonal chain using the \TI arguments & example & explanation \\ \midrule \TAline{\parg{pt1,pt2,pt3,...}}{|\BS tkzDrawPolySeg[gray,dashed](A,B,C)|}{Drawing a triangle} - \end{tabular} +\end{tabular} \medskip \begin{tabular}{lll}% @@ -501,35 +494,23 @@ A Sangaku look! It is a question of proving that one can inscribe in a half-disc \tkzDrawPoints(P_1,P_...,P_8) \end{tikzpicture} \end{tkzexample} - %<----------------------------------------------------------------------------> % CIRCLE %<----------------------------------------------------------------------------> - \section{Draw a circle with \tkzcname{tkzDrawCircle}} \subsection{Draw one circle} \begin{NewMacroBox}{tkzDrawCircle}{\oarg{local options}\parg{A,B}}% -\tkzHandBomb\ Attention you need only two points to define a radius or a diameter. An additional option \tkzname{R} is available to give a measure directly. +\tkzHandBomb\ Attention you need only two points to define a radius. An additional option \tkzname{R} is available to give a measure directly. \medskip \begin{tabular}{lll}% \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{pt1,pt2}}{\parg{A,B}} {two points to define a radius or a diameter} -\end{tabular} - -\medskip -\begin{tabular}{lll}% -\toprule -options & default & definition \\ -\midrule -\TOline{through}{through}{circle with two points defining a radius} -\TOline{diameter}{through}{circle with two points defining a diameter} -\TOline{R}{through}{circle characterized by a point and the measurement of a radius} +\TAline{\parg{pt1,pt2}}{\parg{A,B}} {A center through B} \bottomrule -\end{tabular} +\end{tabular} \medskip Of course, you have to add all the styles of \TIKZ\ for the tracings... @@ -545,12 +526,12 @@ Of course, you have to add all the styles of \TIKZ\ for the tracings... % circle with center O and passing through A \tkzDrawCircle(O,A) % diameter circle $[OA]$ - \tkzDrawCircle[diameter,new,% - line width=.4pt,fill=orange!10,% - opacity=.5](O,A) + \tkzDefCircle[diameter](O,A) \tkzGetPoint{I} + \tkzDrawCircle[new,fill=orange!10,opacity=.5](I,A) % circle with center O and radius = exp(1) cm \edef\rayon{\fpeval{0.25*exp(1)}} - \tkzDrawCircle[R,color=orange](O,\rayon) + \tkzDefCircle[R](O,\rayon) \tkzGetPoint{o} + \tkzDrawCircle[color=orange](O,o) \end{tikzpicture} \end{tkzexample} @@ -594,18 +575,18 @@ Of course, you have to add all the styles of \TIKZ\ for the tracings... \end{tikzpicture} \end{tkzexample} - \subsubsection{Concentric circles.} +\subsubsection{Concentric circles.} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} - \tkzDefPoint(0,0){A} - \tkzDrawCircles[R](A,1 A,2 A,3) + \tkzDefPoints{0/0/A,1/0/a,2/0/b,3/0/c} + \tkzDrawCircles(A,a A,b A,c) \tkzDrawPoint(A) \tkzLabelPoints(A) \end{tikzpicture} \end{tkzexample} - \subsubsection{Exinscribed circles.} +\subsubsection{Exinscribed circles.} \begin{tkzexample}[latex=8cm,small] \begin{tikzpicture}[scale=1] @@ -613,8 +594,7 @@ Of course, you have to add all the styles of \TIKZ\ for the tracings... \tkzDrawPolygon(A,B,C) \tkzDefCircle[ex](B,C,A) \tkzGetPoint{J_c} \tkzGetSecondPoint{T_c} -\tkzGetLength{rJc} -\tkzDrawCircle[R](J_c,{\rJc pt}) +\tkzDrawCircle(J_c,T_c) \tkzDrawLines[add=0 and 1](C,A C,B) \tkzDrawSegment(J_c,T_c) \tkzMarkRightAngle(J_c,T_c,B) @@ -648,7 +628,7 @@ Based on an idea by O. Reboux made with pst-eucl (Pstricks module) by D. Rodrigu \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{pt1,pt2}}{\parg{O,A} or \parg{A,B}} {radius or diameter} +\TAline{\parg{pt1,pt2}}{\parg{O,A}} {radius} \bottomrule \end{tabular} @@ -658,7 +638,6 @@ arguments & example & explanation \\ options & default & definition \\ \midrule \TOline{through} {through}{circle characterized by two points defining a radius} -\TOline{diameter} {through}{circle characterized by two points defining a diameter} \end{tabular} \end{NewMacroBox} @@ -680,7 +659,6 @@ options & default & definition \\ \tkzDrawCircle(M,I) \tkzCalcLength(M,I) \tkzGetLength{dMI} \tkzDrawPolygon(A,B,C,D) - \tkzDrawCircle[R](M,\dMI) \tkzDrawSemiCircle(F,D) \end{tikzpicture} \end{tkzexample} @@ -704,16 +682,14 @@ arguments & example & explanation \\ options & default & definition \\ \midrule \TOline{through}{through}{circle with two points defining a radius} -\TOline{diameter}{through}{circle with two points defining a diameter} \bottomrule \end{tabular} \end{NewMacroBox} - %<----------------------------------------------------------------------------> % ARC %<----------------------------------------------------------------------------> - \section{Drawing arcs} +\subsection{Macro: \tkzcname{tkzDrawArc} } \begin{NewMacroBox}{tkzDrawArc}{\oarg{local options}\parg{O,\dots}\parg{\dots}}% This macro traces the arc of center $O$. Depending on the options, the arguments differ. It is a question of determining a starting point and an end point. Either the starting point is given, which is the simplest, or the radius of the arc is given. In the latter case, it is necessary to have two angles. Either the angles can be given directly, or nodes associated with the center can be given to determine them. The angles are in degrees. @@ -727,7 +703,8 @@ options & default & definition \\ \TOline{R}{towards}{We give the radius and two angles} \TOline{R with nodes}{towards}{We give the radius and two points} \TOline{angles}{towards}{We give the radius and two points} -\TOline{delta}{0}{angle added on each side } +\TOline{delta}{0}{angle added on each side } +\TOline{reverse}{false}{inversion of the arc's path, interesting to inverse arrow} \bottomrule \end{tabular} @@ -750,7 +727,7 @@ options & arguments & example \\ Here are a few examples: -\subsection{Option \tkzname{towards}} +\subsubsection{Option \tkzname{towards}} It's useless to put \tkzname{towards}. In this first example the arc starts from $A$ and goes to $B$. The arc going from $B$ to $A$ is different. The salient is obtained by going in the direct direction of the trigonometric circle. \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.75] @@ -766,7 +743,7 @@ It's useless to put \tkzname{towards}. In this first example the arc starts from \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{towards}} +\subsubsection{Option \tkzname{towards}} In this one, the arc starts from A but stops on the right (OB). \begin{tkzexample}[latex=6cm,small] @@ -783,7 +760,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{rotate}} +\subsubsection{Option \tkzname{rotate}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoint(0,0){O} @@ -796,7 +773,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{R}} +\subsubsection{Option \tkzname{R}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoints{0/0/O} @@ -808,7 +785,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{R with nodes}} +\subsubsection{Option \tkzname{R with nodes}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoint(0,0){O} @@ -819,7 +796,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{delta}} +\subsubsection{Option \tkzname{delta}} This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow on either side. delta is a measure in degrees. \begin{tkzexample}[latex=7cm,small] @@ -840,12 +817,12 @@ This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow \end{scope} \tkzDrawPoints(A,B,C,D) - \tkzLabelPoints(A,B,C,D) + \tkzLabelPoints[below right](A,B,C,D) \tkzMarkRightAngle(D,B,A) \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{angles}: example 1} +\subsubsection{Option \tkzname{angles}: example 1} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.75] @@ -863,12 +840,12 @@ This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow \tkzDrawLines(A,B O,E B,E) \tkzDrawPoints(A,B,O,D,E) \end{scope} - \tkzLabelPoints(A,B,O,D,E) + \tkzLabelPoints[below right](A,B,O,D,E) \tkzMarkRightAngle(O,B,E) \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{angles}: example 2} +\subsubsection{Option \tkzname{angles}: example 2} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture} @@ -889,28 +866,40 @@ This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow \end{tikzpicture} \end{tkzexample} +\subsubsection{Option \tkzname{reverse}: inversion of the arrow} + +\begin{tkzexample}[latex=6cm,small] + \begin{tikzpicture} + \tkzDefPoints{0/0/O,3/0/U} + \tkzDefPoint(10:1){A} + \tkzDefPoint(90:1){B} + \tkzLabelPoints(A,B) + \tkzDrawArc[reverse,tkz arrow={Stealth}](O,A)(B) + \tkzDrawPoints(A,B,O) + \end{tikzpicture} +\end{tkzexample} %<----------------------------------------------------------------------------> % SECTOR %<----------------------------------------------------------------------------> - \section{Drawing a sector or sectors} \subsection{\tkzcname{tkzDrawSector}} \tkzHandBomb\ Attention the arguments vary according to the options. \begin{NewMacroBox}{tkzDrawSector}{\oarg{local options}\parg{O,\dots}\parg{\dots}}% -\begin{tabular}{lll}% +\begin{tabular}{SlSlSl}% options & default & definition \\ \midrule \TOline{towards}{towards}{$O$ is the center and the arc from $A$ to $(OB)$} \TOline{rotate} {towards}{the arc starts from $A$ and the angle determines its length } \TOline{R}{towards}{We give the radius and two angles} \TOline{R with nodes}{towards}{We give the radius and two points} -\bottomrule + \end{tabular} -You have to add, of course, all the styles of \TIKZ\ for tracings... +\medskip +\emph{You have to add, of course, all the styles of \TIKZ\ for tracings...} \begin{tabular}{lll}% -\toprule + options & arguments & example \\ \midrule \TOline{towards}{\parg{pt,pt}\parg{pt}}{\tkzcname{tkzDrawSector(O,A)(B)}} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-elements.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-elements.tex index ba1dbc6e075..4d01262ccba 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-elements.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-elements.tex @@ -1,4 +1,3 @@ - \section{The Elements of tkz code} To work with my package, you need to have notions of \LATEX\ as well as \TIKZ. @@ -15,13 +14,8 @@ The used points are passed as parameters between parentheses while the created p The code of the figures is placed in an environment \tkzimp{tikzpicture} -\begin{tkzltxexample}[] - \begin{tikzpicture} - code ... - \end{tikzpicture} - \end{tkzltxexample} - - Contrary to \TIKZ, you should not end a macro with ";". We thus lose the important notion which is the \tkzimp{path}. However, it is possible to place some code between the macros \tkzname{\tkznameofpack}. + +Contrary to \TIKZ, you should not end a macro with ";". We thus lose the important notion which is the \tkzimp{path}. However, it is possible to place some code between the macros \tkzname{\tkznameofpack}. Among the first category, |\tkzDefPoint| allows you to define fixed points. It will be studied in detail later. Here we will see in detail the macro |\tkzDefTriangle|. @@ -36,12 +30,10 @@ In order to choose a certain type of triangle among the following choices: |equilateral|, |isosceles right|, |half|, |pythagoras|, |school|, |golden or sublime|, |euclid|, |gold|, |cheops|... and |two angles| you just have to choose between hooks, for example: - - \begin{minipage}{0.5\textwidth} \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/A,8/0/B} - \foreach \tr in {euclid, gold} + \foreach \tr in {golden, equilateral} {\tkzDefTriangle[\tr](A,B) \tkzGetPoint{C} \tkzDrawPoint(C) \tkzLabelPoint[right](C){\tr} @@ -55,7 +47,7 @@ In order to choose a certain type of triangle among the following choices: \begin{tkzexample}[code only,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/A,8/0/B} - \foreach \tr in {euclid,gold} + \foreach \tr in {golden, equilateral} {\tkzDefTriangle[\tr](A,B) \tkzGetPoint{C} \tkzDrawPoint(C) \tkzLabelPoint[right](C){\tr} @@ -67,7 +59,6 @@ In order to choose a certain type of triangle among the following choices: \end{tkzexample} \end{minipage} - \subsection{Notations and conventions} I deliberately chose to use the geometric French and personal conventions to describe the geometric objects represented. The objects defined and represented by \tkzname{\tkznameofpack} are points, lines and circles located in a plane. They are the primary objects of Euclidean geometry from which we will construct figures. @@ -77,7 +68,6 @@ Thus a point has no dimension and therefore no real existence. In the same way t Here are the notations that will be used: - \begin{itemize} \item The points are represented geometrically either by a small disc or by the intersection of two lines (two straight lines, a straight line and a circle or two circles). In this case, the point is represented by a cross. @@ -130,7 +120,6 @@ Another exception relates to intermediate construction points which will not be \item The semi-straight line is designated as follows $[AB)$. - \item Relation between the straight lines. Two perpendicular $(AB)$ and $(CD)$ lines will be written $(AB) \perp (CD)$ and if they are parallel we will write $(AB) \parallelslant (CD)$. \item The lengths of the sides of triangle ABC are $AB$, $AC$ and $BC$. The numbers are also designated by a lowercase letter so we will write: $AB=c$, $AC=b$ and $BC=a$. The letter $a$ is also used to represent an angle, and $r$ is frequently used to represent a radius, $d$ a diameter, $l$ a length, $d$ a distance. @@ -141,16 +130,13 @@ Another exception relates to intermediate construction points which will not be \item The arcs are designated by their extremities. For example if $A$ and $B$ are two points of the same circle then $\widearc{AB}$. - \item Circles are noted either $\mathcal{C}$ if there is no possible confusion or $\mathcal{C}$ $(O~;~A)$ for a circle with center $O$ and passing through the point $A$ or $\mathcal{C}$ $(O~;~1)$ for a circle with center O and radius 1 cm. \item Name of the particular lines of a triangle: I used the terms bisector, bisector out, mediator (sometimes called perpendicular bisectors), altitude, median and symmedian. \item ($x_1$,$y_1$) coordinates of the point $A_1$, ($x_A$,$y_A$) coordinates of the point $A$. - \end{itemize} - \subsection{\tkzname{Set, Calculate, Draw, Mark, Label}} The title could have been: \texttt{Separation of Calculus and Drawings} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex index 2447e1f842a..1a64516c84f 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex @@ -1,4 +1,3 @@ - \section{Some interesting examples} \subsection{Square root of the integers} @@ -87,10 +86,10 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \begin{tikzpicture} \node [mybox,title={Book II, proposition XI \_Euclid's Elements\_}] (box){% - \begin{minipage}{0.90\textwidth} +\begin{minipage}{0.90\textwidth} {\emph{To construct Square and rectangle of same area.} } - \end{minipage} +\end{minipage} }; \end{tikzpicture}% @@ -110,7 +109,8 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDrawSegments(A,F E,B H,I F,H) \tkzDrawPolygons(A,B,C,D) \tkzDrawPoints(A,...,I) - \tkzLabelPoints(A,...,I) + \tkzLabelPoints[below right](A,E,D,F,I) + \tkzLabelPoints[above right](C,B,G,H) \end{tikzpicture} \end{tkzexample} @@ -120,7 +120,7 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \begin{tikzpicture} \node [mybox,title={Steiner Line and Simson Line}] (box){% - \begin{minipage}{0.90\textwidth} +\begin{minipage}{0.90\textwidth} {\emph{Consider the triangle ABC and a point M on its circumcircle. The projections of M on the sides of the triangle are on a line (Steiner Line), The three closest points to M on lines AB, AC, and BC are collinear. It's the Simson Line. }} \end{minipage} @@ -153,10 +153,8 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDrawPoints(A,B,C,H,M,N,P,Q,R,P',Q',R',I,J,K) \tkzLabelPoints(A,B,C,H,M,N,P,Q,R,P',Q',R',I,J,K) \end{tikzpicture} - \end{tkzexample} - \newpage \subsection{Lune of Hippocrates} @@ -180,7 +178,8 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDrawPolygon[fill=green!5](A,B,C) \begin{scope} \tkzClipCircle[out](B,A) - \tkzDrawSemiCircle[diameter,fill=teal!5](A,C) + \tkzDefMidPoint(C,A) \tkzGetPoint{M} + \tkzDrawSemiCircle[fill=teal!5](M,C) \end{scope} \tkzDrawArc[delta=0](B,C)(A) \end{tikzpicture} @@ -207,11 +206,14 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDefMidPoint(C,A) \tkzGetPoint{I} \begin{scope} \tkzClipCircle[out](I,A) - \tkzDrawSemiCircle[diameter,fill=teal!5](B,A) - \tkzDrawSemiCircle[diameter,fill=teal!5](C,B) + \tkzDefMidPoint(B,A) \tkzGetPoint{x} + \tkzDrawSemiCircle[fill=teal!5](x,A) + \tkzDefMidPoint(B,C) \tkzGetPoint{y} + \tkzDrawSemiCircle[fill=teal!5](y,B) \end{scope} \tkzSetUpCompass[/tkzcompass/delta=0] - \tkzDrawSemiCircle[diameter](C,A) + \tkzDefMidPoint(C,A) \tkzGetPoint{z} + \tkzDrawSemiCircle(z,A) \end{tikzpicture} \end{tkzexample} @@ -265,9 +267,6 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \end{tikzpicture} \end{tkzexample} - - - \newpage \subsection{Similar isosceles triangles} @@ -281,8 +280,6 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn }; \end{tikzpicture}% - - The following is from the excellent site \textbf{Descartes et les Mathématiques}. I did not modify the text and I am only the author of the programming of the figures. \url{http://debart.pagesperso-orange.fr/seconde/triangle.html} @@ -290,13 +287,10 @@ The following is from the excellent site \textbf{Descartes et les Mathématiques Bibliography: \begin{itemize} - \item Géométrie au Bac - Tangente, special issue no. 8 - Exercise 11, page 11 - \item Elisabeth Busser and Gilles Cohen: 200 nouveaux problèmes du "Monde" - POLE 2007 (200 new problems of "Le Monde") - \item Affaire de logique n° 364 - Le Monde February 17, 2004 \end{itemize} @@ -313,7 +307,7 @@ At what angle does he see these two vertices?} \vspace*{2cm} The constructions and their associated codes are on the next two pages, but you can search before looking. The programming respects (it seems to me ...) my reasoning in both cases. - \subsection{Revised version of "Tangente"} +\subsection{Revised version of "Tangente"} \begin{tkzexample}[] \begin{tikzpicture}[scale=.8,rotate=60] \tkzDefPoint(6,0){X} \tkzDefPoint(3,3){Y} @@ -391,7 +385,8 @@ The three altitudes of a triangle intersect at the same H-point. \tkzDrawSegments[color=orange](B,B' C,C' A,A') \tkzMarkRightAngles(C,B',B B,C',C C,A',A) \tkzDrawPoints(A,B,C,A',B',C',H) - \tkzLabelPoints(A,B,C,A',B',C',H) + \tkzLabelPoints[above right](A,B',C',H) + \tkzLabelPoints[below right](B,C,A') \end{tikzpicture} \end{tkzexample} @@ -408,7 +403,9 @@ The three altitudes of a triangle intersect at the same H-point. \tkzInterLC(C,B)(O,A) \tkzGetSecondPoint{N} \tkzInterLL(B,M)(A,N)\tkzGetPoint{I} -\tkzDrawCircles[diameter](A,B I,C) +\tkzDefCircle[diameter](A,B)\tkzGetPoint{x} +\tkzDefCircle[diameter](I,C)\tkzGetPoint{y} +\tkzDrawCircles(x,A y,C) \tkzDrawSegments(C,A C,B A,B B,M A,N) \tkzMarkRightAngles[fill=brown!20](A,M,B A,N,B A,P,C) \tkzDrawSegment[style=dashed,color=orange](C,P) @@ -422,7 +419,6 @@ The three altitudes of a triangle intersect at the same H-point. \end{tikzpicture} \end{tkzexample} - \newpage \subsection{Three circles in an Equilateral Triangle } \begin{tikzpicture} @@ -496,7 +492,6 @@ The three altitudes of a triangle intersect at the same H-point. \end{tikzpicture} \end{tkzexample} - In the triangle $ABC$ \begin{equation} @@ -526,33 +521,33 @@ One of the beautiful arrangements of circles found at the Temple of Osiris at Ab Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \url{http://mathworld.wolfram.com/FlowerofLife.html} \begin{tkzexample}[vbox,small] - \begin{tikzpicture}[scale=.75] - \tkzSetUpLine[line width=2pt,color=teal!80!black] - \tkzSetUpCompass[line width=2pt,color=teal!80!black] - \tkzDefPoint(0,0){O} \tkzDefPoint(2.25,0){A} - \tkzDrawCircle(O,A) - \foreach \i in {0,...,5}{ - \tkzDefPointBy[rotation= center O angle 30+60*\i](A)\tkzGetPoint{a\i} - \tkzDefPointBy[rotation= center {a\i} angle 120](O)\tkzGetPoint{b\i} - \tkzDefPointBy[rotation= center {a\i} angle 180](O)\tkzGetPoint{c\i} - \tkzDefPointBy[rotation= center {c\i} angle 120](a\i)\tkzGetPoint{d\i} - \tkzDefPointBy[rotation= center {c\i} angle 60](d\i)\tkzGetPoint{f\i} - \tkzDefPointBy[rotation= center {d\i} angle 60](b\i)\tkzGetPoint{e\i} - \tkzDefPointBy[rotation= center {f\i} angle 60](d\i)\tkzGetPoint{g\i} - \tkzDefPointBy[rotation= center {d\i} angle 60](e\i)\tkzGetPoint{h\i} - \tkzDefPointBy[rotation= center {e\i} angle 180](b\i)\tkzGetPoint{k\i} - \tkzDrawCircle(a\i,O) - \tkzDrawCircle(b\i,a\i) - \tkzDrawCircle(c\i,a\i) - \tkzDrawArc[rotate](f\i,d\i)(-120) - \tkzDrawArc[rotate](e\i,d\i)(180) - \tkzDrawArc[rotate](d\i,f\i)(180) - \tkzDrawArc[rotate](g\i,f\i)(60) - \tkzDrawArc[rotate](h\i,d\i)(60) - \tkzDrawArc[rotate](k\i,e\i)(60) - } - \tkzClipCircle(O,f0) - \end{tikzpicture} +\begin{tikzpicture}[scale=.75] + \tkzSetUpLine[line width=2pt,color=teal!80!black] + \tkzSetUpCompass[line width=2pt,color=teal!80!black] + \tkzDefPoint(0,0){O} \tkzDefPoint(2.25,0){A} + \tkzDrawCircle(O,A) +\foreach \i in {0,...,5}{ + \tkzDefPointBy[rotation= center O angle 30+60*\i](A)\tkzGetPoint{a\i} + \tkzDefPointBy[rotation= center {a\i} angle 120](O)\tkzGetPoint{b\i} + \tkzDefPointBy[rotation= center {a\i} angle 180](O)\tkzGetPoint{c\i} + \tkzDefPointBy[rotation= center {c\i} angle 120](a\i)\tkzGetPoint{d\i} + \tkzDefPointBy[rotation= center {c\i} angle 60](d\i)\tkzGetPoint{f\i} + \tkzDefPointBy[rotation= center {d\i} angle 60](b\i)\tkzGetPoint{e\i} + \tkzDefPointBy[rotation= center {f\i} angle 60](d\i)\tkzGetPoint{g\i} + \tkzDefPointBy[rotation= center {d\i} angle 60](e\i)\tkzGetPoint{h\i} + \tkzDefPointBy[rotation= center {e\i} angle 180](b\i)\tkzGetPoint{k\i} + \tkzDrawCircle(a\i,O) + \tkzDrawCircle(b\i,a\i) + \tkzDrawCircle(c\i,a\i) + \tkzDrawArc[rotate](f\i,d\i)(-120) + \tkzDrawArc[rotate](e\i,d\i)(180) + \tkzDrawArc[rotate](d\i,f\i)(180) + \tkzDrawArc[rotate](g\i,f\i)(60) + \tkzDrawArc[rotate](h\i,d\i)(60) + \tkzDrawArc[rotate](k\i,e\i)(60) +} + \tkzClipCircle(O,f0) +\end{tikzpicture} \end{tkzexample} @@ -567,52 +562,32 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ }; \end{tikzpicture}% -\begin{tkzexample}[code only, small] -\begin{tikzpicture} - \tkzDefPoint(0,0){O} \tkzDefPoint(5,0){A} - \tkzDefPoint(0,5){B} \tkzDefPoint(-5,0){C} - \tkzDefPoint(0,-5){D} - \tkzDefMidPoint(A,O) \tkzGetPoint{I} - \tkzInterLC(I,B)(I,A) \tkzGetPoints{F}{E} - \tkzInterCC(O,C)(B,E) \tkzGetPoints{D3}{D2} - \tkzInterCC(O,C)(B,F) \tkzGetPoints{D4}{D1} - \tkzDrawArc[angles](B,E)(180,360) - \tkzDrawArc[angles](B,F)(220,340) - \tkzDrawLine[add=.5 and .5](B,I) - \tkzDrawCircle(O,A) - \tkzDrawCircle[diameter](O,A) - \tkzDrawSegments(B,D C,A) - \tkzDrawPolygon[new](D,D1,D2,D3,D4) - \tkzDrawPoints(A,...,D,O) - \tkzDrawPoints[new](E,F,I,D1,D2,D4,D3) - \tkzLabelPoints(A,...,D,O) - \tkzLabelPoints[new](I,E,F,D1,D2,D4,D3) - \end{tikzpicture} -\end{tkzexample} - +\begin{tkzexample}[vbox,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(0,0){O} \tkzDefPoint(5,0){A} \tkzDefPoint(0,5){B} \tkzDefPoint(-5,0){C} \tkzDefPoint(0,-5){D} - \tkzDefMidPoint(A,O) \tkzGetPoint{I} - \tkzInterLC(I,B)(I,A) \tkzGetPoints{F}{E} - \tkzInterCC(O,C)(B,E) \tkzGetPoints{D3}{D2} - \tkzInterCC(O,C)(B,F) \tkzGetPoints{D4}{D1} + \tkzDefMidPoint(A,O) \tkzGetPoint{I} + \tkzInterLC(I,B)(I,A) \tkzGetPoints{F}{E} + \tkzInterCC(O,C)(B,E) \tkzGetPoints{D3}{D2} + \tkzInterCC(O,C)(B,F) \tkzGetPoints{D4}{D1} \tkzDrawArc[angles](B,E)(180,360) \tkzDrawArc[angles](B,F)(220,340) \tkzDrawLine[add=.5 and .5](B,I) \tkzDrawCircle(O,A) - \tkzDrawCircle[diameter](O,A) + \tkzDefCircle[diameter](O,A) \tkzGetPoint{x} + \tkzDrawCircle(x,A) \tkzDrawSegments(B,D C,A) \tkzDrawPolygon[new](D,D1,D2,D3,D4) \tkzDrawPoints(A,...,D,O) \tkzDrawPoints[new](E,F,I,D1,D2,D4,D3) - \tkzLabelPoints(A,...,D,O) - \tkzLabelPoints[new](I,E,F,D1,D2,D4,D3) + \tkzLabelPoints[below left](A,...,D,O) + \tkzLabelPoints[new,below right](I,E,F,D1,D2,D4,D3) \end{tikzpicture} - +\end{tkzexample} + \newpage \subsection{Pentagon in a square} \begin{tikzpicture} @@ -624,41 +599,14 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ }; \end{tikzpicture}% -\begin{tkzexample}[code only, small] - \begin{tikzpicture} - \tkzDefPoint(-5,-5){A} \tkzDefPoint(0,0){O} - \tkzDefPoint(+5,-5){B} \tkzDefPoint(0,-5){F} - \tkzDefPoint(+5,0){F'} \tkzDefPoint(0,+5){E} \tkzDefPoint(-5,0){K} - \tkzDefSquare(A,B) \tkzGetPoints{C}{D} - \tkzInterLC(D,C)(E,B) \tkzGetSecondPoint{T} - \tkzDefMidPoint(D,T) \tkzGetPoint{I} - \tkzInterCC[with nodes](O,D,I)(E,D,I) \tkzGetSecondPoint{H} - \tkzInterLC(O,H)(O,E) \tkzGetSecondPoint{M} - \tkzInterCC(O,E)(E,M) \tkzGetFirstPoint{Q} - \tkzInterCC[with nodes](O,O,E)(Q,E,M) \tkzGetFirstPoint{P} - \tkzInterCC[with nodes](O,O,E)(P,E,M) \tkzGetFirstPoint{N} - \tkzCompass(O,H) - \tkzCompass(E,H) - \tkzDrawArc(E,B)(T) - \tkzDrawPolygon(A,B,C,D) - \tkzDrawCircle(O,E) - \tkzDrawSegments[new](T,I O,H E,H E,F F',K) - \tkzDrawPoints(T,M,Q,P,N,I) - \tkzDrawPolygon[new](M,E,Q,P,N) - \tkzLabelPoints(A,B,O,N,P,Q,M,H) - \tkzLabelPoints[above right](C,D,E,I,T) -\end{tikzpicture} -\end{tkzexample} - - \begin{tikzpicture}[scale=.5] - \tkzDefPoint(-5,-5){A} - \tkzDefPoint(0,0){O} - \tkzDefPoint(+5,-5){B} - \tkzDefPoint(0,-5){F} - \tkzDefPoint(+5,0){F'} - \tkzDefPoint(0,+5){E} - \tkzDefPoint(-5,0){K} - \tkzDefSquare(A,B) \tkzGetPoints{C}{D} +\begin{tkzexample}[vbox,small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/O,-5/-5/A,5/-5/B} + \tkzDefSquare(A,B) \tkzGetPoints{C}{D} + \tkzDefMidPoint(A,B) \tkzGetPoint{F} + \tkzDefMidPoint(C,D) \tkzGetPoint{E} + \tkzDefMidPoint(B,C) \tkzGetPoint{G} + \tkzDefMidPoint(A,D) \tkzGetPoint{K} \tkzInterLC(D,C)(E,B) \tkzGetSecondPoint{T} \tkzDefMidPoint(D,T) \tkzGetPoint{I} \tkzInterCC[with nodes](O,D,I)(E,D,I) \tkzGetSecondPoint{H} @@ -666,18 +614,16 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ \tkzInterCC(O,E)(E,M) \tkzGetFirstPoint{Q} \tkzInterCC[with nodes](O,O,E)(Q,E,M) \tkzGetFirstPoint{P} \tkzInterCC[with nodes](O,O,E)(P,E,M) \tkzGetFirstPoint{N} - \tkzCompass(O,H) - \tkzCompass(E,H) + \tkzCompasss(O,H E,H) \tkzDrawArc(E,B)(T) - \tkzDrawPolygon(A,B,C,D) + \tkzDrawPolygons[purple](A,B,C,D M,E,Q,P,N) \tkzDrawCircle(O,E) - \tkzDrawSegments(T,I O,H E,H) - \tkzDrawSegments(E,F F',K) + \tkzDrawSegments(T,I O,H E,H E,F G,K) \tkzDrawPoints(T,M,Q,P,N,I) - \tkzDrawPolygon[color=purple](M,E,Q,P,N) \tkzLabelPoints(A,B,O,N,P,Q,M,H) \tkzLabelPoints[above right](C,D,E,I,T) \end{tikzpicture} +\end{tkzexample} \newpage \subsection{Hexagon Inscribed} @@ -690,7 +636,8 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ }; \end{tikzpicture}% - +\subsubsection{Hexagon Inscribed version 1} % (fold) +\label{ssub:hexagon_inscribed_version_1} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.5] \pgfmathsetmacro{\c}{6} @@ -708,8 +655,10 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ \tkzDrawPolygon[red,thick](a2,a1,b2,b1,c2,c1) \end{tikzpicture} \end{tkzexample} +% subsubsection hexagon_inscribed_version_1 (end) -Another solution +\subsubsection{Hexagon Inscribed version 2} % (fold) +\label{ssub:hexagon_inscribed_version_2} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.5] \pgfmathsetmacro{\c}{6} @@ -723,6 +672,7 @@ Another solution \tkzDrawPolygon[fill=purple!20,opacity=.5](a,b,c) \end{tikzpicture} \end{tkzexample} +% subsubsection hexagon_inscribed_version_2 (end) \newpage \subsection{Power of a point with respect to a circle} @@ -734,6 +684,7 @@ Another solution \end{minipage} }; \end{tikzpicture}% + \begin{tkzexample}[vbox,small] \begin{tikzpicture} \pgfmathsetmacro{\r}{2}% @@ -765,12 +716,16 @@ Another solution }; \end{tikzpicture}% +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) -\tkzDrawCircle[R,dashed,new](K,3) -\tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} -\tkzInterCC[R](B,2)(K,3) \tkzGetPoints{b}{b'} +\tkzDefCircle[R](A,1)\tkzGetPoint{a} +\tkzDefCircle[R](B,2)\tkzGetPoint{b} +\tkzDefCircle[R](K,3)\tkzGetPoint{k} +\tkzDrawCircles(A,a B,b) +\tkzDrawCircle[dashed,new](K,k) +\tkzInterCC(A,a)(K,k) \tkzGetPoints{a}{a'} +\tkzInterCC(B,b)(K,k) \tkzGetPoints{b}{b'} \tkzDrawLines[new,add=2 and 2](a,a') \tkzDrawLines[new,add=1 and 1](b,b') \tkzInterLL(a,a')(b,b') \tkzGetPoint{X} @@ -780,23 +735,6 @@ Another solution \tkzDrawLine[add= 1 and 2,new](X,H) \tkzLabelPoints(A,B,H,X,a,b,a',b') \end{tikzpicture} - -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoints{0/0/A,4/2/B,2/3/K} - \tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} - \tkzInterCC[R](B,2)(K,3) \tkzGetPoints{b}{b'} - \tkzDrawLines[color=red,add=2 and 2](a,a') - \tkzDrawLines[color=red,add=1 and 1](b,b') - \tkzInterLL(a,a')(b,b') \tkzGetPoint{X} - \tkzDefPointBy[projection= onto A--B](X) \tkzGetPoint{H} - \tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) - \tkzDrawCircle[R,dashed,orange](K,3) - \tkzDrawPoints(A,B,H,X,a,b,a',b') - \tkzDrawLine(A,B) - \tkzDrawLine[add= 1 and 2](X,H) - \tkzLabelPoints(A,B,H,X,a,b,a',b') - \end{tikzpicture} \end{tkzexample} \newpage @@ -810,37 +748,23 @@ Another solution }; \end{tikzpicture}% +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) +\tkzDefCircle[R](A,1)\tkzGetPoint{a} +\tkzDefCircle[R](B,2)\tkzGetPoint{b} +\tkzDrawCircles(A,a B,b) \tkzDrawLine(A,B) \tkzDefShiftPoint[A](60:1){M} \tkzDefShiftPoint[B](60:2){M'} \tkzInterLL(A,B)(M,M') \tkzGetPoint{O} -\tkzDefTangent[from = O](B,M') \tkzGetPoints{X}{T'} -\tkzDefTangent[from = O](A,M) \tkzGetPoints{X}{T} +\tkzDefLine[tangent from = O](B,M') \tkzGetPoints{X}{T'} +\tkzDefLine[tangent from = O](A,M) \tkzGetPoints{X}{T} \tkzDrawPoints(A,B,O,T,T',M,M') \tkzDrawLines[new](O,B O,T' O,M') \tkzDrawSegments[new](A,M B,M') \tkzLabelPoints(A,B,O,T,T',M,M') \end{tikzpicture} - - -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoints{0/0/A,4/2/B,2/3/K} - \tkzDefShiftPoint[A](60:1){M} - \tkzDefShiftPoint[B](60:2){M'} - \tkzInterLL(A,B)(M,M') \tkzGetPoint{O} - \tkzDefTangent[from = O](B,M') \tkzGetPoints{X}{T'} - \tkzDefTangent[from = O](A,M) \tkzGetPoints{X}{T} - \tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) - \tkzDrawLine(A,B) - \tkzDrawPoints(A,B,O,T,T',M,M') - \tkzDrawLines[new](O,B O,T' O,M') - \tkzDrawSegments[new](A,M B,M') - \tkzLabelPoints(A,B,O,T,T',M,M') - \end{tikzpicture} \end{tkzexample} \newpage @@ -854,6 +778,7 @@ Another solution }; \end{tikzpicture}% +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \pgfmathsetmacro{\r}{1}% \pgfmathsetmacro{\R}{2}% @@ -863,37 +788,20 @@ Another solution \tkzInterLC[R](A,B)(B,\rt) \tkzGetPoints{E}{F} \tkzInterCC(I,B)(B,F) \tkzGetPoints{a}{a'} \tkzInterLC[R](B,a)(B,\R) \tkzGetPoints{X'}{T'} - \tkzDefTangent[at=T'](B) \tkzGetPoint{h} + \tkzDefLine[tangent at=T'](B) \tkzGetPoint{h} \tkzInterLL(T',h)(A,B) \tkzGetPoint{O} \tkzInterLC[R](O,T')(A,\r) \tkzGetPoints{T}{T} - \tkzDrawCircle[R](A,\r) \tkzDrawCircle[R](B,\R) - \tkzDrawCircle[R,orange](B,\rt) \tkzDrawCircle[orange,dashed](I,B) + \tkzDefCircle[R](A,\r) \tkzGetPoint{a} + \tkzDefCircle[R](B,\R) \tkzGetPoint{b} + \tkzDefCircle[R](B,\rt) \tkzGetPoint{c} + \tkzDrawCircles(A,a) + \tkzDrawCircles[orange](B,b B,c) + \tkzDrawCircle[orange,dashed](I,B) \tkzDrawPoints(O,A,B,a,a',E,F,T',T) \tkzDrawLines(O,B A,a B,T' A,T) \tkzDrawLines[add= 1 and 8](T',h) \tkzLabelPoints(O,A,B,a,a',E,F,T,T') \end{tikzpicture} - -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \pgfmathsetmacro{\r}{1}% - \pgfmathsetmacro{\R}{2}% - \pgfmathsetmacro{\rt}{\R-\r}% - \tkzDefPoints{0/0/A,4/2/B,2/3/K} - \tkzDefMidPoint(A,B) \tkzGetPoint{I} - \tkzInterLC[R](A,B)(B,\rt) \tkzGetPoints{E}{F} - \tkzInterCC(I,B)(B,F) \tkzGetPoints{a}{a'} - \tkzInterLC[R](B,a)(B,\R) \tkzGetPoints{X'}{T'} - \tkzDefTangent[at=T'](B) \tkzGetPoint{h} - \tkzInterLL(T',h)(A,B) \tkzGetPoint{O} - \tkzInterLC[R](O,T')(A,\r) \tkzGetPoints{T}{T} - \tkzDrawCircle[R](A,\r) \tkzDrawCircle[R](B,\R) - \tkzDrawCircle[R,orange](B,\rt) \tkzDrawCircle[orange,dashed](I,B) - \tkzDrawPoints(O,A,B,a,a',E,F,T',T) - \tkzDrawLines(O,B A,a B,T' A,T) - \tkzDrawLines[add= 1 and 8](T',h) - \tkzLabelPoints(O,A,B,a,a',E,F,T,T') - \end{tikzpicture} \end{tkzexample} \newpage @@ -907,33 +815,12 @@ Another solution }; \end{tikzpicture}% -\begin{tikzpicture} -\tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircles[R](A,1 B,3) -\tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} -\tkzInterCC[R](B,3)(K,3) \tkzGetPoints{b}{b'} -\tkzInterLL(a,a')(b,b') \tkzGetPoint{X} -\tkzDefPointBy[projection= onto A--B](X) \tkzGetPoint{H} -\tkzGetPoint{C} -\tkzInterLC[R](A,B)(B,3) \tkzGetPoints{b1}{E} -\tkzInterLC[R](A,B)(A,1) \tkzGetPoints{D}{a2} -\tkzDefMidPoint(D,E) \tkzGetPoint{I} -\tkzDrawCircle[orange](I,D) -\tkzInterLC(X,H)(I,D) \tkzGetPoints{M}{M'} -\tkzInterLC(M,D)(A,D) \tkzGetPoints{P}{P'} -\tkzInterLC(M,E)(B,E) \tkzGetPoints{Q'}{Q} -\tkzInterLL(P,Q)(A,B) \tkzGetPoint{O} -\tkzDrawSegments[orange](A,P I,M B,Q) -\tkzDrawPoints(A,B,D,E,M,I,O,P,Q,X,H) -\tkzDrawLines(O,E M,D M,E O,Q) -\tkzDrawLine[add= 3 and 4,orange](X,H) -\tkzLabelPoints(A,B,D,E,M,I,O,P,Q,X,H) -\end{tikzpicture} -\begin{tkzexample}[code only,small] +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircles[R](A,1 B,3) +\tkzDefCircle[R](A,1) \tkzGetPoint{a} +\tkzDefCircle[R](B,3) \tkzGetPoint{b} \tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} \tkzInterCC[R](B,3)(K,3) \tkzGetPoints{b}{b'} \tkzInterLL(a,a')(b,b') \tkzGetPoint{X} @@ -947,6 +834,7 @@ Another solution \tkzInterLC(M,D)(A,D) \tkzGetPoints{P}{P'} \tkzInterLC(M,E)(B,E) \tkzGetPoints{Q'}{Q} \tkzInterLL(P,Q)(A,B) \tkzGetPoint{O} +\tkzDrawCircles(A,a B,b) \tkzDrawSegments[orange](A,P I,M B,Q) \tkzDrawPoints(A,B,D,E,M,I,O,P,Q,X,H) \tkzDrawLines(O,E M,D M,E O,Q) @@ -966,45 +854,26 @@ Another solution }; \end{tikzpicture}% - \begin{tikzpicture} - \tkzDefPoint(0,0){A} - \tkzDefRandPointOn[circle= center A radius 4] \tkzGetPoint{B} - \tkzDefPointBy[rotation= center A angle 180](B) \tkzGetPoint{C} - \tkzInterCC(A,B)(B,A) \tkzGetPoints{I}{I'} - \tkzInterCC(A,I)(I,A) \tkzGetPoints{J}{B} - \tkzInterCC(B,A)(C,B) \tkzGetPoints{D}{E} - \tkzInterCC(D,B)(E,B) \tkzGetPoints{M}{M'} - \tkzSetUpArc[color=orange,style=solid,delta=10] - \tkzDrawArc(C,D)(E) - \tkzDrawArc(B,E)(D) - \tkzDrawCircle[color=teal,line width=.2pt](A,B) - \tkzDrawArc(D,B)(M) - \tkzDrawArc(E,M)(B) - \tkzCompasss[color=orange,style=solid](B,I I,J J,C) - \tkzDrawPoints(A,B,C,D,E,M) - \tkzLabelPoints(A,B,M) - \end{tikzpicture} - - \begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoint(0,0){A} - \tkzDefRandPointOn[circle= center A radius 4] \tkzGetPoint{B} - \tkzDefPointBy[rotation= center A angle 180](B) \tkzGetPoint{C} - \tkzInterCC(A,B)(B,A) \tkzGetPoints{I}{I'} - \tkzInterCC(A,I)(I,A) \tkzGetPoints{J}{B} - \tkzInterCC(B,A)(C,B) \tkzGetPoints{D}{E} - \tkzInterCC(D,B)(E,B) \tkzGetPoints{M}{M'} - \tkzSetUpArc[color=orange,style=solid,delta=10] - \tkzDrawArc(C,D)(E) - \tkzDrawArc(B,E)(D) - \tkzDrawCircle[color=teal,line width=.2pt](A,B) - \tkzDrawArc(D,B)(M) - \tkzDrawArc(E,M)(B) - \tkzCompasss[color=orange,style=solid](B,I I,J J,C) - \tkzDrawPoints(A,B,C,D,E,M) - \tkzLabelPoints(A,B,M) - \end{tikzpicture} - \end{tkzexample} +\begin{tkzexample}[vbox,small] +\begin{tikzpicture} +\tkzDefPoint(0,0){A} +\tkzDefRandPointOn[circle= center A radius 4] \tkzGetPoint{B} +\tkzDefPointBy[rotation= center A angle 180](B) \tkzGetPoint{C} +\tkzInterCC(A,B)(B,A) \tkzGetPoints{I}{I'} +\tkzInterCC(A,I)(I,A) \tkzGetPoints{J}{B} +\tkzInterCC(B,A)(C,B) \tkzGetPoints{D}{E} +\tkzInterCC(D,B)(E,B) \tkzGetPoints{M}{M'} +\tkzSetUpArc[color=orange,style=solid,delta=10] +\tkzDrawArc(C,D)(E) +\tkzDrawArc(B,E)(D) +\tkzDrawCircle[color=teal,line width=.2pt](A,B) +\tkzDrawArc(D,B)(M) +\tkzDrawArc(E,M)(B) +\tkzCompasss[color=orange,style=solid](B,I I,J J,C) +\tkzDrawPoints(A,B,C,D,E,M) +\tkzLabelPoints(A,B,M) +\end{tikzpicture} +\end{tkzexample} \newpage @@ -1025,14 +894,7 @@ The set of all points whose distances from two fixed points are in a constant ra With \pkg{tkz-euclide} is easy to show you the last definition -\subsubsection*{The code and the analyse} - -\begin{tkzexample}[code only, small] -\documentclass{standalone} - % Excellent class to show the result and to verify the bounding box. -\usepackage{tkz-euclide} - % no need to use \usetkzobj ! -\begin{document} +\begin{tkzexample}[vbox, small] \begin{tikzpicture}[scale=1.5] % Firstly we defined two fixed point. % The figure depends of these points and the ratio K @@ -1040,39 +902,19 @@ With \pkg{tkz-euclide} is easy to show you the last definition \tkzDefPoint(4,0){B} % tkz-euclide.sty knows about the apollonius's circle % with K=2 we search some points like I such as IA=2 x IB -\tkzDefCircle[apollonius,K=2](A,B) \tkzGetPoint{K1} -\tkzGetLength{rAp} -\tkzDefPointOnCircle[R= angle 30 center K1 radius \rAp] +\tkzDefCircle[apollonius,K=2](A,B) \tkzGetPoints{K1}{k} +\tkzDefPointOnCircle[through= center K1 angle 30 point k] \tkzGetPoint{I} -\tkzDefPointOnCircle[R= angle 280 center K1 radius \rAp] +\tkzDefPointOnCircle[through= center K1 angle 280 point k] \tkzGetPoint{J} \tkzDrawSegments[new](A,I I,B A,J J,B) -\tkzDrawCircle[R,color = teal,fill=teal!20,opacity=.4](K1,\rAp pt) +\tkzDrawCircle[color = teal,fill=teal!20,opacity=.4](K1,k) \tkzDrawPoints(A,B,K1,I,J) \tkzDrawSegment(A,B) \tkzLabelPoints[below,font=\scriptsize](A,B,K1,I,J) \end{tikzpicture} -\end{document} \end{tkzexample} -\subsubsection*{The result} - -\begin{tikzpicture}[scale=1.5] -\tkzDefPoint(0,0){A} -\tkzDefPoint(4,0){B} -\tkzDefCircle[apollonius,K=2](A,B) \tkzGetPoint{K1} -\tkzGetLength{rAp} -\tkzDefPointOnCircle[R = angle 30 center K1 radius \rAp] -\tkzGetPoint{I} -\tkzDefPointOnCircle[R = angle 280 center K1 radius \rAp] -\tkzGetPoint{J} -\tkzDrawSegments[new](A,I I,B A,J J,B) -\tkzDrawCircle[R,fill=teal!20,opacity=.4](K1,\rAp pt) -\tkzDrawPoints(A,B,K1,I,J) -\tkzDrawSegment(A,B) -\tkzLabelPoints[below,font=\scriptsize](A,B,K1,I,J) -\end{tikzpicture} - \subsection{Application of Inversion : \tkzname{Pappus chain} }\label{pappus} \begin{tikzpicture} \node [mybox,title={Pappus chain}] (box){% @@ -1082,23 +924,24 @@ From Wikipedia {\emph{In geometry, the Pappus chain is a ring of circles betwee }; \end{tikzpicture}% - \begin{tkzexample}[vbox,small] +\begin{tikzpicture}[ultra thin] \pgfmathsetmacro{\xB}{6}% \pgfmathsetmacro{\xC}{9}% \pgfmathsetmacro{\xD}{(\xC*\xC)/\xB}% \pgfmathsetmacro{\xJ}{(\xC+\xD)/2}% \pgfmathsetmacro{\r}{\xD-\xJ}% \pgfmathsetmacro{\nc}{16}% -\begin{tikzpicture}[ultra thin] \tkzDefPoints{0/0/A,\xB/0/B,\xC/0/C,\xD/0/D} - \tkzDrawCircle[diameter,fill=teal!20](A,C) - \tkzDrawCircle[diameter,fill=teal!30](A,B) + \tkzDefCircle[diameter](A,C) \tkzGetPoint{x} + \tkzDrawCircle[fill=teal!30](x,C) + \tkzDefCircle[diameter](A,B) \tkzGetPoint{y} + \tkzDrawCircle[fill=teal!30](y,B) \foreach \i in {-\nc,...,0,...,\nc} {\tkzDefPoint(\xJ,2*\r*\i){J} \tkzDefPoint(\xJ,2*\r*\i-\r){H} \tkzDefCircleBy[inversion = center A through C](J,H) - \tkzDrawCircle[diameter,fill=teal](tkzFirstPointResult,tkzSecondPointResult)} + \tkzDrawCircle[fill=teal](tkzFirstPointResult,tkzSecondPointResult)} \end{tikzpicture} \end{tkzexample} @@ -1141,41 +984,44 @@ Since the triangles $AO_2C$ and $AO_1E$ are isosceles the angles at the base are }; \end{tikzpicture}% + +\begin{tkzexample}[vbox,overhang,small] \begin{tikzpicture} - \tkzDefPoints{0/0/A,12/0/C} - \tkzDefGoldenRatio(A,C) \tkzGetPoint{B} - \tkzDefMidPoint(A,C) \tkzGetPoint{O} - \tkzDefMidPoint(A,B) \tkzGetPoint{O_1} - \tkzDefMidPoint(B,C) \tkzGetPoint{O_2} - \tkzDefExtSimilitudeCenter(O_1,A)(O_2,B) \tkzGetPoint{M_0} - \tkzDefIntSimilitudeCenter(O,A)(O_1,A) \tkzGetPoint{M_1} - \tkzDefIntSimilitudeCenter(O,C)(O_2,C) \tkzGetPoint{M_2} - \tkzInterCC(O_1,A)(M_2,C) \tkzGetFirstPoint{E} - \tkzInterCC(O_2,C)(M_1,A) \tkzGetSecondPoint{F} - \tkzInterCC(O,A)(M_0,B) \tkzGetFirstPoint{D} - \tkzInterLL(O_1,E)(O_2,F) \tkzGetPoint{O_3} - \tkzDefCircle[circum](E,F,B) \tkzGetPoint{0_4} - \tkzInterLC(A,D)(O_1,A) \tkzGetFirstPoint{I} - \tkzInterLC(C,D)(O_2,B) \tkzGetSecondPoint{K} - \tkzInterLC[common=D](A,D)(O_3,D) \tkzGetFirstPoint{G} - \tkzInterLC[common=D](C,D)(O_3,D) \tkzGetFirstPoint{H} - \tkzInterLL(C,G)(B,K) \tkzGetPoint{M} - \tkzInterLL(A,H)(B,I) \tkzGetPoint{L} - \tkzInterLL(L,G)(A,C) \tkzGetPoint{N} - \tkzInterLL(M,H)(A,C) \tkzGetPoint{P} - \tkzDrawCircles[red,thin](O_3,F) - \tkzDrawCircles[new,thin](0_4,B) - \tkzDrawSemiCircles[teal](O,C O_1,B O_2,C) - \tkzDrawSemiCircles[green](M_2,C) - \tkzDrawSemiCircles[green,swap](M_1,A) - \tkzDrawSegment(A,C) - \tkzDrawSegments[new](O_1,O_3 O_2,O_3) - \tkzDrawSegments[new,very thin](B,D A,D C,D G,H I,B K,B B,G B,H C,G A,H G,N H,P) - \tkzDrawPoints(A,B,C,M_1,M_2,E,O_3,F,D,0_4,O_1,O_2,I,K,G,H,L,P,N,M) - \tkzLabelPoints[font=\scriptsize](A,B,C,M_1,M_2,F,O_1,O_2,I,K,G,H,L,M,N) - \tkzLabelPoints[font=\scriptsize,right](E,O_3,D,0_4,P) +\tkzDefPoints{0/0/A,12/0/C} +\tkzDefGoldenRatio(A,C) \tkzGetPoint{B} +\tkzDefMidPoint(A,C) \tkzGetPoint{O} +\tkzDefMidPoint(A,B) \tkzGetPoint{O_1} +\tkzDefMidPoint(B,C) \tkzGetPoint{O_2} +\tkzDefExtSimilitudeCenter(O_1,A)(O_2,B) \tkzGetPoint{M_0} +\tkzDefIntSimilitudeCenter(O,A)(O_1,A) \tkzGetPoint{M_1} +\tkzDefIntSimilitudeCenter(O,C)(O_2,C) \tkzGetPoint{M_2} +\tkzInterCC(O_1,A)(M_2,C) \tkzGetFirstPoint{E} +\tkzInterCC(O_2,C)(M_1,A) \tkzGetSecondPoint{F} +\tkzInterCC(O,A)(M_0,B) \tkzGetFirstPoint{D} +\tkzInterLL(O_1,E)(O_2,F) \tkzGetPoint{O_3} +\tkzDefCircle[circum](E,F,B) \tkzGetPoint{0_4} +\tkzInterLC(A,D)(O_1,A) \tkzGetFirstPoint{I} +\tkzInterLC(C,D)(O_2,B) \tkzGetSecondPoint{K} +\tkzInterLC[common=D](A,D)(O_3,D) \tkzGetFirstPoint{G} +\tkzInterLC[common=D](C,D)(O_3,D) \tkzGetFirstPoint{H} +\tkzInterLL(C,G)(B,K) \tkzGetPoint{M} +\tkzInterLL(A,H)(B,I) \tkzGetPoint{L} +\tkzInterLL(L,G)(A,C) \tkzGetPoint{N} +\tkzInterLL(M,H)(A,C) \tkzGetPoint{P} +\tkzDrawCircles[red,thin](O_3,F) +\tkzDrawCircles[new,thin](0_4,B) +\tkzDrawSemiCircles[teal](O,C O_1,B O_2,C) +\tkzDrawSemiCircles[green](M_2,C) +\tkzDrawSemiCircles[green,swap](M_1,A) +\tkzDrawSegment(A,C) +\tkzDrawSegments[new](O_1,O_3 O_2,O_3) +\tkzDrawSegments[new,very thin](B,H C,G A,H G,N H,P) +\tkzDrawSegments[new,very thin](B,D A,D C,D G,H I,B K,B B,G) +\tkzDrawPoints(A,B,C,M_1,M_2,E,O_3,F,D,0_4,O_1,O_2,I,K,G,H,L,P,N,M) +\tkzLabelPoints[font=\scriptsize](A,B,C,M_1,M_2,F,O_1,O_2,I,K,G,H,L,M,N) +\tkzLabelPoints[font=\scriptsize,right](E,O_3,D,0_4,P) \end{tikzpicture} - +\end{tkzexample} Let $GH$ be the diameter of the circle which is parallel to $AC$, and let the circle touch the semicircles on $AC$, $AB$, $BC$ in $D$, $E$, $F$ respectively. @@ -1196,7 +1042,7 @@ hence \[ \frac{AN}{NP} = \frac{NP}{PC} \quad\text{so} \quad {NP}^2 = AN \times PC \] Now suppose that $B$ divides $[AC]$ according to the divine proportion that is : -\[\phi = \frac{AB}{BC} = \frac{AC}{AB} \quad\text{then} \quad AN = \phi NP \text{and} NP = \phi PC \] +\[\phi = \frac{AB}{BC} = \frac{AC}{AB} \quad\text{then} \quad AN = \phi NP \text{and}\quad NP = \phi PC \] We have \[ AC = AN + NP + PC\quad \text{either} \quad AB + BC = = AN + NP + PC \quad \text{or} \quad (\phi + 1) BC = AN + NP + PC \] @@ -1232,71 +1078,45 @@ But don't forget that behind or far above \pkg{tkz-euclide} there is TikZ. I'm o The last example is very complex and it is to show you all that we can do with \pkg{tkz-euclide}. -\subsubsection*{The code and the analyse} - -\begin{tkzexample}[code only,small] -% !TEX TS-program = lualatex -\documentclass{standalone} -\usepackage{tkz-euclide} -\tkzSetUpColors[background=white,text=black] -\tkzSetUpCompass[color=orange, line width=.4pt,delta=10] -\tkzSetUpArc[color=gray,line width=.4pt] -\tkzSetUpPoint[size=2,color=teal] -\tkzSetUpLine[line width=.4pt,color=teal] -\tkzSetUpStyle[orange]{new} -\tikzset{every picture/.style={line width=.4pt}} - -\begin{document} -\begin{tikzpicture}[scale=.75] +\begin{tkzexample}[vbox,small] +\begin{tikzpicture}[scale=.6] \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} -% we need some special points if the triangle, tkz-euclide.sty knows about them - -\tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{N} % or \tkzEulerCenter(A,B,C) -\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{O} % \tkzCircumCenter(A,B,C) -\tkzDefTriangleCenter[lemoine](A,B,C) \tkzGetPoint{K} -\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H} - - % \tkzDefSpcTriangle new macro to define new triangle in relation wth ABC +\tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{N} +\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{O} +\tkzDefTriangleCenter[lemoine](A,B,C) \tkzGetPoint{K} +\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H} \tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} \tkzDefSpcTriangle[centroid,name=M](A,B,C){a,b,c} -\tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoint{Sp} % Sp Spieker center - -% here I used the definition but tkz-euclide knows this point -% \tkzDefTriangleCenter[spieker](A,B,C) \tkzGetPoint{Sp} -% each center has three projections on the sides of the triangle ABC -% We can do this with one macro +\tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoint{Sp} % Sp Spieker center \tkzDefProjExcenter[name=J](A,B,C)(a,b,c){Y,Z,X} - -% but possible is -% \tkzDefPointBy[projection=onto A--C ](Ja) \tkzGetPoint{Za} \tkzDefLine[parallel=through Za](A,B) \tkzGetPoint{Xc} \tkzInterLL(Za,Xc)(C,B) \tkzGetPoint{C'} \tkzDefLine[parallel=through Zc](B,C) \tkzGetPoint{Ya} \tkzInterLL(Zc,Ya)(A,B) \tkzGetPoint{A'} \tkzDefPointBy[reflection= over Ja--Jc](C')\tkzGetPoint{Ab} \tkzDefPointBy[reflection= over Ja--Jc](A')\tkzGetPoint{Cb} -% Now we can get the center of THE CIRCLE : Q -% BUT we need to find the radius or a point on the circle \tkzInterLL(K,O)(N,Sp) \tkzGetPoint{Q} \tkzInterLC(A,B)(Q,Cb) \tkzGetFirstPoint{Ba} \tkzInterLC(A,C)(Q,Cb) \tkzGetPoints{Ac}{Ca} \tkzInterLC(B,C')(Q,Cb) \tkzGetFirstPoint{Bc} -\tkzInterLC(Ja,Q)(Q,Cb) \tkzGetSecondPoint{F'a} -\tkzInterLC(Jc,Q)(Q,Cb) \tkzGetFirstPoint{F'c} -\tkzInterLC(Jb,Q)(Q,Cb) \tkzGetSecondPoint{F'b} -\tkzInterLC[common=F'a](Sp,F'a)(Ja,F'a) \tkzGetFirstPoint{Fa} -\tkzInterLC[common=F'b](Sp,F'b)(Jb,F'b) \tkzGetFirstPoint{Fb} -\tkzInterLC[common=F'c](Sp,F'c)(Jc,F'c) \tkzGetFirstPoint{Fc} +\tkzInterLC[next to=Ja](Ja,Q)(Q,Cb) \tkzGetFirstPoint{F'a} +\tkzInterLC[next to=Jc](Jc,Q)(Q,Cb) \tkzGetFirstPoint{F'c} +\tkzInterLC[next to=Jb](Jb,Q)(Q,Cb) \tkzGetFirstPoint{F'b} +\tkzInterLC[common=F'a](Sp,F'a)(Ja,F'a) \tkzGetFirstPoint{Fa} +\tkzInterLC[common=F'b](Sp,F'b)(Jb,F'b) \tkzGetFirstPoint{Fb} +\tkzInterLC[common=F'c](Sp,F'c)(Jc,F'c) \tkzGetFirstPoint{Fc} \tkzInterLC(Mc,Sp)(Q,Cb) \tkzGetFirstPoint{A''} -\tkzDefLine[parallel=through A''](N,Mc) \tkzGetPoint{q} +\tkzDefCircle[euler](A,B,C) \tkzGetPoints{E}{e} +\tkzDefCircle[ex](C,A,B) \tkzGetPoints{Ea}{a} +\tkzDefCircle[ex](A,B,C) \tkzGetPoints{Eb}{b} +\tkzDefCircle[ex](B,C,A) \tkzGetPoints{Ec}{c} % Calculations are done, now you can draw, mark and label +\tkzDrawCircles(Q,Cb E,e)% +\tkzDrawCircles(Eb,b Ea,a Ec,c) \tkzDrawPolygon(A,B,C) -\tkzDrawCircle(Q,Bc)% -\tkzDrawCircle[euler,lightgray](A,B,C) -\tkzDrawCircles[ex](A,B,C B,C,A C,A,B) -\tkzDrawSegments[dashed](A,A' C,C' A',Zc Za,C' B,Cb B,Ab A,Ca C,Ac - Ja,Xa Jb,Yb Jc,Zc) +\tkzDrawSegments[dashed](A,A' C,C' A',Zc Za,C' B,Cb B,Ab A,Ca) +\tkzDrawSegments[dashed](C,Ac Ja,Xa Jb,Yb Jc,Zc) \begin{scope} \tkzClipCircle(Q,Cb) % We limit the drawing of the lines \tkzDrawLine[add=5 and 12,orange](K,O) @@ -1311,70 +1131,6 @@ The last example is very complex and it is to show you all that we can do with \ \tkzLabelPoints[right](C) \tkzLabelPoints[below right](A) \tkzLabelPoints[above right](Yb) -\tkzDrawSegments[color=green!50!black](Mc,N Mc,A'' A'',Q) -\tkzDrawSegments[color=red,dashed](Ac,Ab Ca,Cb Ba,Bc Ja,Jc A',Cb C',Ab) -\tkzDrawSegments[color=red](Cb,Ab Bc,Ac Ba,Ca A',C') -\tkzMarkSegments[color=red,mark=|](Cb,Ab Bc,Ac Ba,Ca) -\tkzMarkRightAngles(Jc,Zc,A Ja,Xa,B Jb,Yb,C) -\tkzDrawSegments[green,dashed](A,F'a B,F'b C,F'c) -\end{tikzpicture} -\end{document} -\end{tkzexample} - -\subsubsection*{The result} - -\begin{tikzpicture}[scale=.6] -\tkzDefPoints{0/0/A,6/0/B,0.8/4/C} -\tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{N} -\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{O} -\tkzDefTriangleCenter[lemoine](A,B,C) \tkzGetPoint{K} -\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H} -\tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} -\tkzDefSpcTriangle[centroid,name=M](A,B,C){a,b,c} -\tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoint{Sp} - -\tkzDefProjExcenter[name=J](A,B,C)(a,b,c){Y,Z,X} -\tkzDefLine[parallel=through Za](A,B) \tkzGetPoint{Xc} -\tkzInterLL(Za,Xc)(C,B) \tkzGetPoint{C'} -\tkzDefLine[parallel=through Zc](B,C) \tkzGetPoint{Ya} -\tkzInterLL(Zc,Ya)(A,B) \tkzGetPoint{A'} -\tkzDefPointBy[reflection= over Ja--Jc](C')\tkzGetPoint{Ab} -\tkzDefPointBy[reflection= over Ja--Jc](A')\tkzGetPoint{Cb} - -\tkzInterLL(K,O)(N,Sp) \tkzGetPoint{Q} -\tkzInterLC(A,B)(Q,Cb) \tkzGetFirstPoint{Ba} -\tkzInterLC(A,C)(Q,Cb) \tkzGetPoints{Ac}{Ca} -\tkzInterLC(B,C')(Q,Cb) \tkzGetFirstPoint{Bc} -\tkzInterLC(Ja,Q)(Q,Cb) \tkzGetSecondPoint{F'a} -\tkzInterLC(Jc,Q)(Q,Cb) \tkzGetFirstPoint{F'c} -\tkzInterLC(Jb,Q)(Q,Cb) \tkzGetSecondPoint{F'b} -\tkzInterLC[common=F'a](Sp,F'a)(Ja,F'a) \tkzGetFirstPoint{Fa} -\tkzInterLC[common=F'b](Sp,F'b)(Jb,F'b) \tkzGetFirstPoint{Fb} -\tkzInterLC[common=F'c](Sp,F'c)(Jc,F'c) \tkzGetFirstPoint{Fc} -\tkzInterLC(Mc,Sp)(Q,Cb) \tkzGetFirstPoint{A''} -\tkzDefLine[parallel=through A''](N,Mc) \tkzGetPoint{q} -\tkzDrawPolygon(A,B,C) -\tkzDrawCircle(Q,Bc)% -\tkzDrawCircle[euler,lightgray](A,B,C) -\tkzDrawCircles[ex](A,B,C B,C,A C,A,B) -\tkzDrawSegments[dashed](A,A' C,C' A',Zc Za,C' B,Cb B,Ab A,Ca C,Ac - Ja,Xa Jb,Yb Jc,Zc) - -\begin{scope} - \tkzClipCircle(Q,Cb) - \tkzDrawLine[add=5 and 12,orange](K,O) - \tkzDrawLine[add=12 and 28,red!50!black](N,Sp) -\end{scope} - -\tkzDrawPoints(A,B,C,K,Ja,Jb,Jc,Q,N,O,Sp,Mc,Xa,Xb,Yb,Yc,Za,Zc) -\tkzDrawPoints(A',C',A'',Ab,Cb,Bc,Ca,Ac,Ba,Fa,Fb,Fc,F'a,F'b,F'c) -\tkzLabelPoints(Ja,Jb,Jc,Q,Xa,Xb,Za,Zc,Ab,Cb,Bc,Ca,Ac,Ba,F'b) -\tkzLabelPoints[above](O,K,F'a,Fa,A'') -\tkzLabelPoints[below](B,F'c,Yc,N,Sp,Fc,Mc) -\tkzLabelPoints[left](A',C',Fb) -\tkzLabelPoints[right](C) -\tkzLabelPoints[below right](A) -\tkzLabelPoints[above right](Yb) \tkzDrawSegments(Fc,F'c Fb,F'b Fa,F'a) \tkzDrawSegments[color=green!50!black](Mc,N Mc,A'' A'',Q) \tkzDrawSegments[color=red,dashed](Ac,Ab Ca,Cb Ba,Bc Ja,Jc A',Cb C',Ab) @@ -1383,6 +1139,6 @@ The last example is very complex and it is to show you all that we can do with \ \tkzMarkRightAngles(Jc,Zc,A Ja,Xa,B Jb,Yb,C) \tkzDrawSegments[green,dashed](A,F'a B,F'b C,F'c) \end{tikzpicture} - +\end{tkzexample} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-filling.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-filling.tex index 8976e9e7b39..c8f1ea14f1b 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-filling.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-filling.tex @@ -41,7 +41,7 @@ You don't need to put \tkzname{radius} because that's the default option. Of cou \tkzDefMidPoint(A,D) \tkzGetPoint{F} \tkzDefMidPoint(B,C) \tkzGetPoint{E} \tkzDefMidPoint(B,D) \tkzGetPoint{Q} - \tkzDefTangent[from = B](F,A) \tkzGetPoints{H}{G} + \tkzDefLine[tangent from = B](F,A) \tkzGetPoints{H}{G} \tkzInterLL(F,G)(C,D) \tkzGetPoint{J} \tkzInterLL(A,J)(F,E) \tkzGetPoint{K} \tkzDefPointBy[projection=onto B--A](K) @@ -88,8 +88,10 @@ You don't need to put \tkzname{radius} because that's the default option. Of cou \tkzDefMidPoint(I,K) \tkzGetPoint{b} \begin{scope} \tkzFillSector[fill=blue!10](B,C)(A) - \tkzDrawSemiCircle[diameter,fill=white](A,B) - \tkzDrawSemiCircle[diameter,fill=white](B,C) + \tkzDefMidPoint(A,B) \tkzGetPoint{x} + \tkzDrawSemiCircle[fill=white](x,B) + \tkzDefMidPoint(B,C) \tkzGetPoint{y} + \tkzDrawSemiCircle[fill=white](y,C) \tkzClipCircle(E,B) \tkzClipCircle(F,B) \tkzFillCircle[fill=blue!10](B,A) diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-installation.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-installation.tex index 32752f857bd..8432fd7ee1e 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-installation.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-installation.tex @@ -1,4 +1,4 @@ - \section{Installation} +\section{Installation} \tkzname{\tkznameofpack} is on the server of the \tkzname{CTAN}\footnote{\tkzname{\tkznameofpack} is part of \NameDist{TeXLive} and \tkzname{tlmgr} allows you to install them. This package is also part of \NameDist{MiKTeX} under \NameSys{Windows}.}. If you want to test a beta version, just put the following files in a texmf folder that your system can find. You will have to check several points: @@ -6,6 +6,29 @@ You will have to check several points: \begin{itemize}\setlength{\itemsep}{5pt} \item The \tkzname{\tkznameofpack} folder must be located on a path recognized by \tkzname{latex}. \item The \tkzname{\tkznameofpack} uses \tkzNamePack{xfp}. + +\item You need to have \PGF\ installed on your computer. \tkzname{\tkznameofpack} use several libraries of \TIKZ + + \begin{tabular}{l} + angles, \\ + arrows, \\ + arrows.meta, \\ + calc, \\ + decorations, \\ + decorations.markings, \\ + decorations.pathreplacing, \\ + decorations.shapes, \\ + decorations.text, \\ + decorations.pathmorphing, \\ + intersections, \\ + math, \\ + plotmarks, \\ + positioning, \\ + quotes, \\ + shapes.misc, \\ + through +\end{tabular} + \item This documentation and all examples were obtained with \tkzname{lualatex} but \tkzname{pdflatex} or \tkzname{xelatex} should be suitable. \end{itemize} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-intersec.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-intersection.tex index e55ac4faf81..1583f91e2b2 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-intersec.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-intersection.tex @@ -14,9 +14,9 @@ Defines the intersection point \tkzname{tkzPointResult} of the two lines $(AB)$ \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[rotate=-45,scale=.75] \tkzDefPoint(2,1){A} - \tkzDefPoint(6,5){B} + \tkzDefPoint(6,5){B} \tkzDefPoint(3,6){C} - \tkzDefPoint(5,2){D} + \tkzDefPoint(5,2){D} \tkzDrawLines(A,B C,D) \tkzInterLL(A,B)(C,D) \tkzGetPoint{I} @@ -52,7 +52,7 @@ options & default & definition \\ \medskip The macro defines the intersection points $I$ and $J$ of the line $(AB)$ and the center circle $O$ with radius $r$ if they exist; otherwise, an error will be reported in the |.log| file. \tkzname{with nodes} avoids you to calculate the radius which is the length of $[CD]$. -If common and near are not used then \tkzname{tkzFirstPoint} is the smallest angle (angle with \tkzname{tkzSecondPoint} and the center of the circle). +If \tkzname{common} and \tkzname{near} are not used then \tkzname{tkzFirstPoint} is the smallest angle (angle with \tkzname{tkzSecondPoint} and the center of the circle). \end{NewMacroBox} \begin{NewMacroBox}{tkzTestInterLC}{\parg{$O,A$}\parg{$O',B$}}% @@ -94,7 +94,7 @@ In the following example, the drawing of the circle uses two points and the inte \tkzDefPoint(-2,4){La} \tkzDefPoint(5,0){Lb} \tkzDefPoint(3,3){C} - \tkzInterLC(A,B)(O,C) \tkzGetPoints{D}{E} + \tkzInterLC(La,Lb)(O,C) \tkzGetPoints{D}{E} \tkzMarkAngle[->,size=1.5](E,D,O) \tkzDrawPolygons[new](O,D,E) \tkzMarkAngle[->,size=1.5](D,E,O) @@ -106,7 +106,7 @@ In the following example, the drawing of the circle uses two points and the inte \end{tikzpicture} \end{tkzexample} -\subsubsection{Line passing through the cente,r option \tkzname{common}} +\subsubsection{Line passing through the center option \tkzname{common}} This case is special. You cannot compare the angles. In this case, the option \tkzname{near} must be used. \tkzname{tkzFirstPoint} is assigned to the point closest to the first point given for the line. Here we want $A$ to be closest to $Lb$. \begin{tkzexample}[latex=7cm,small] @@ -122,8 +122,8 @@ This case is special. You cannot compare the angles. In this case, the option \t \tkzInterLC[near](Lb,La)(O,D) \tkzGetFirstPoint{A} \tkzDrawSegments(O,A) - \tkzDrawPoints(O,D,La,Lb) - \tkzLabelPoints(O,D,La,Lb,a) + \tkzDrawPoints(O,D,A,La,Lb) + \tkzLabelPoints(O,D,A,La,Lb) \end{tikzpicture} \end{tkzexample} @@ -216,10 +216,10 @@ Figure from \url{http://gogeometry.com/problem/p190_tangent_circle} \begin{tikzpicture}[scale=.75] \tkzDefPoint(0,0){A} \tkzDefPoint(8,0){B} - \tkzDefMidPoint(A,B) \tkzGetPoint{O} - \tkzDefMidPoint(O,B) \tkzGetPoint{O'} - \tkzDefTangent[from=A](O',B) \tkzGetFirstPoint{E} - \tkzInterLC(A,E)(O,B) \tkzGetFirstPoint{D} + \tkzDefMidPoint(A,B) \tkzGetPoint{O} + \tkzDefMidPoint(O,B) \tkzGetPoint{O'} + \tkzDefLine[tangent from=A](O',B) \tkzGetFirstPoint{E} + \tkzInterLC(A,E)(O,B) \tkzGetFirstPoint{D} \tkzDefPointBy[projection=onto A--B](D) \tkzGetPoint{F} \tkzDrawCircles(O,B O',B) @@ -228,7 +228,7 @@ Figure from \url{http://gogeometry.com/problem/p190_tangent_circle} opacity=.4](A,O F,B) \tkzDrawPoints(A,B,O,O',E,D) \tkzMarkRightAngle(D,F,B) - \tkzLabelPoints(A,B,O,O',E,D) + \tkzLabelPoints[below right](A,B,O,O',E,D) \end{tikzpicture} \end{tkzexample} @@ -276,7 +276,7 @@ With \tkzname{xfp} and \tkzcname{fpeval}: % or \edef\tkzLen{\fpeval{0.0002/0.0001}} \tkzInterLC[R](A,B)(O, \tkzLen) \tkzGetPoints{I}{J} - \tkzDrawCircle[R](O,\tkzLen) + \tkzDrawCircle(O,I) \tkzDrawPoints[color=blue](A,B) \tkzDrawPoints[color=red](I,J) \tkzDrawLine(I,J) @@ -325,7 +325,7 @@ So the arguments are two couples which define two circles with a center and a po \subsubsection{test circle-circle intersection} \begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=1] +\begin{tikzpicture}[scale=.75] \tkzDefPoints{% x y name 0 /0 /A, 2 /0 /B, @@ -362,23 +362,24 @@ The idea is to compare the angles formed with the first center, a resultant poin As you can see $\widehat{ODB} < \widehat{OBE} $ \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture}[scale=.5] - \pgfkeys{/pgf/number format/.cd,fixed relative,precision=4} - \tkzDefPoints{0/0/O,5/-1/A,2/2/B,2/-1/C} - \tkzDrawPoints(O,A,B) - \tkzDrawCircles(O,A B,C) - \tkzInterCC(O,A)(B,C)\tkzGetPoints{D}{E} - \tkzDrawPoints(C,D,E) - \tkzLabelPoints(O,A,B,C,D,E) - \tkzDrawSegments[cyan](D,O D,B) - \tkzMarkAngle[red,->,size=1.5](O,D,B) - \tkzFindAngle(O,D,B) \tkzGetAngle{an} - \tkzLabelAngle(O,D,B){$ \pgfmathprintnumber{\an}$} - \tkzDrawSegments[cyan](E,O E,B) - \tkzMarkAngle[red,->,size=1.5](O,E,B) - \tkzFindAngle(O,E,B) \tkzGetAngle{an} - \tkzLabelAngle(O,E,B){$ \pgfmathprintnumber{\an}$} - \end{tikzpicture} +\begin{tikzpicture}[scale=.5] + \pgfkeys{/pgf/number format/.cd,fixed relative,precision=4} + \tkzDefPoints{0/0/O,5/-1/A,2/2/B,2/-1/C} + \tkzDrawPoints(O,A,B) + \tkzDrawCircles(O,A B,C) + \tkzInterCC(O,A)(B,C)\tkzGetPoints{D}{E} + \tkzDrawPoints(C,D,E) + \tkzLabelPoints(O,A,B,C) + \tkzLabelPoints[above](D,E) + \tkzDrawSegments[cyan](D,O D,B) + \tkzMarkAngle[red,->,size=1.5](O,D,B) + \tkzFindAngle(O,D,B) \tkzGetAngle{an} + \tkzLabelAngle(O,D,B){$ \pgfmathprintnumber{\an}$} + \tkzDrawSegments[cyan](E,O E,B) + \tkzMarkAngle[red,->,size=1.5](O,E,B) + \tkzFindAngle(O,E,B) \tkzGetAngle{an} + \tkzLabelAngle(O,E,B){$ \pgfmathprintnumber{\an}$} +\end{tikzpicture} \end{tkzexample} @@ -466,7 +467,7 @@ $\widehat{A,C,B}$ is a clockwise angle \tkzDrawPoint(O) \tkzDrawCircles[new](M3,D B,M2 D,O) \tkzDrawCircle(O,A) - \tkzLabelPoints(A,B,C,D,E,M1,M2,M3,O,L) + \tkzLabelPoints[below right](A,B,C,D,E,M1,M2,M3,O,L) \end{tikzpicture} \end{tkzexample} @@ -478,11 +479,11 @@ $\widehat{A,C,B}$ is a clockwise angle \begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/P,5/0/Q,3/2/I} - \tkzDefCircleBy[orthogonal from=P](Q,I) + \tkzDefCircle[orthogonal from=P](Q,I) \tkzGetFirstPoint{E} \tkzDrawCircles(P,E Q,E) \tkzInterCC[common=E](P,E)(Q,E) \tkzGetFirstPoint{F} - \tkzDefPointOnCircle[through = angle 80 center P point E] + \tkzDefPointOnCircle[through = center P angle 80 point E] \tkzGetPoint{A} \tkzInterLC[common=E](A,E)(Q,E) \tkzGetFirstPoint{C} \tkzInterLL(A,F)(C,Q) \tkzGetPoint{D} @@ -490,7 +491,10 @@ $\widehat{A,C,B}$ is a clockwise angle \tkzDrawLines[add=0 and 2](A,E) \tkzDrawSegments(P,E E,F F,C A,F C,D) \tkzDrawPoints(P,Q,E,F,A,C,D) - \tkzLabelPoints(P,Q,E,F,A,C,D) + \tkzLabelPoints(P,Q,F) + \tkzLabelPoints[above](E,A) + \tkzLabelPoints[left](D) + \tkzLabelPoints[above right](C) \end{tikzpicture} \end{tkzexample} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex index b7bbbeb5b73..4fbe35123c8 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex @@ -3,7 +3,6 @@ \hypertarget{tlp}{} It is possible to add several labels at the same point by using this macro several times. - \begin{NewMacroBox}{tkzLabelPoint}{\oarg{local options}\parg{point}\var{label}}% \begin{tabular}{lll}% arguments & example & \\ @@ -70,7 +69,6 @@ This macro reduces the number of lines of code, but it is not obvious that all p \tkzLabelPoints(A,B,C) \end{tikzpicture} \end{tkzexample} - %<---------------------------------------------------------------------------> % tkzAutoLabelPoints %<---------------------------------------------------------------------------> @@ -97,7 +95,7 @@ Here the points are positioned relative to the center of gravity of $A,B,C \text \tkzDrawSegments(C,B B,A A,O O,C) \tkzDefCentroid(A,B,C,O) \tkzDrawPoint(tkzPointResult) - \tkzAutoLabelPoints[center=tkzPointResult, dist=.3,red](O,A,B,C) + \tkzLabelPoints(O,A,C,B) \end{tikzpicture} \end{tkzexample} @@ -144,7 +142,7 @@ options & default & definition \\ \tkzDefPointWith[orthogonal normed,K=4](I,A) \tkzGetPoint{H} \tkzDefMidPoint(O,A) \tkzGetPoint{M} - \tkzInterLC(I,H)(M,A)\tkzGetPoints{C}{B} + \tkzInterLC(I,H)(M,A)\tkzGetPoints{B}{C} \tkzDrawSegments[color=white,line width=1pt](I,H O,A) \tkzDrawPoints[color=white](O,I,A,B,M) \tkzMarkRightAngle[color=white,line width=1pt](A,I,B) @@ -159,7 +157,7 @@ options & default & definition \\ \subsubsection{Labels and option : \tkzname{swap}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[rotate=-60] -\tkzSetUpStyle[red,auto]{label seg style} +\tkzSetUpStyle[red,auto]{label style} \tkzDefPoint(0,1){A} \tkzDefPoint(2,4){C} \tkzDefPointWith[orthogonal normed,K=7](C,A) @@ -200,7 +198,6 @@ The arguments are a two-point couple list. The styles of \TIKZ\ are available fo \end{tikzpicture} \end{tkzexample} - \section{Add labels on a straight line \tkzcname{tkzLabelLine}}% \begin{NewMacroBox}{tkzLabelLine}{\oarg{local options}\parg{pt1,pt2}\marg{label}} @@ -277,8 +274,7 @@ It is possible to move the label with all TikZ options : rotate, shift, below, e \end{tikzpicture} \end{tkzexample} - -\subsubsection{Example with \tkzname{pos}} +\subsubsection{With \tkzname{pos}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoints{0/0/O,5/0/A,3/4/B} @@ -291,6 +287,7 @@ It is possible to move the label with all TikZ options : rotate, shift, below, e \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{pos} and \tkzcname{tkzLabelAngles}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[rotate=30] \tkzDefPoint(2,1){S} @@ -317,7 +314,6 @@ It is possible to move the label with all TikZ options : rotate, shift, below, e \end{tkzexample} - \begin{NewMacroBox}{tkzLabelAngles}{\oarg{local options}\parg{A,O,B}\parg{A',O',B'}etc.}% With common options, there is a macro for multiple angles. \end{NewMacroBox} @@ -325,17 +321,16 @@ With common options, there is a macro for multiple angles. It finally remains to be able to give a label to designate a circle and if several possibilities are offered, we will see here \tkzcname{tkzLabelCircle}. \subsection{Giving a label to a circle} -\begin{NewMacroBox}{tkzLabelCircle}{\oarg{local options}\parg{A,B}\parg{angle}\marg{label}}% +\begin{NewMacroBox}{tkzLabelCircle}{\oarg{tikz options}\parg{O,A}\parg{angle}\marg{label}}% \begin{tabular}{lll}% options & default & definition \\ \midrule -\TOline{radius} {radius}{circle characterized by two points defining a radius} -\TOline{R} {radius}{circle characterized by a point and the measurement of a radius } +\TOline{tikz options} {}{circle $O$ center through $A$} \bottomrule \end{tabular} \medskip -You don't need to put \tkzname{radius} because that's the default option. We can use the styles from \TIKZ. The label is created and therefore "passed" between braces. +\emph{ We can use the styles from \TIKZ. The label is created and therefore "passed" between braces.} \end{NewMacroBox} \subsubsection{Example} @@ -351,8 +346,8 @@ You don't need to put \tkzname{radius} because that's the default option. We can \tkzLabelCircle[above=4pt](O,N)(120){$\mathcal{C}$} \tkzDrawCircle(O,M) \tkzFillCircle[color=blue!10,opacity=.4](O,M) - \tkzLabelCircle[R,draw, - text width=2cm,text centered](O,3)(-60)% + \tkzLabelCircle[draw, + text width=2cm,text centered,left=24pt](O,M)(-120)% {The circle\\ $\mathcal{C}$} \tkzDrawPoints(M,P)\tkzLabelPoints[right](M,P) \end{tikzpicture} @@ -367,7 +362,7 @@ This macro allows you to place a label along an arc. The options are those of \T \begin{tabular}{lll}%% argument & example & definition \\ \midrule -\TAline{label}{\tkzcname{tkzLabelSegment(A,B)\{$5$\}}}{label text} +\TAline{label}{\tkzcname{tkzLabelArc(A,B)\{$5$\}}}{label text} \TAline{(pt1,pt2,pt3)}{(O,A,B)}{label along the arc $\widearc{AB}$} \bottomrule \end{tabular} @@ -393,4 +388,5 @@ options & default & definition \\ \tkzLabelPoints(A,B,O) \end{tikzpicture} \end{tkzexample} + \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lines.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lines.tex index d7e852340ef..cc4177dd9ff 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lines.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lines.tex @@ -2,7 +2,6 @@ It is of course essential to draw straight lines, but before this can be done, it is necessary to be able to define certain particular lines such as mediators, bisectors, parallels or even perpendiculars. The principle is to determine two points on the straight line. - \subsection{Definition of straight lines} \begin{NewMacroBox}{tkzDefLine}{\oarg{local options}\parg{pt1,pt2} or \parg{pt1,pt2,pt3}}% @@ -14,8 +13,11 @@ I used the term "mediator" to designate the perpendicular bisector line at the m \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{pt1,pt2}}{\parg{A,B}} {[mediator](A,B)} -\TAline{\parg{pt1,pt2,pt3}}{\parg{A,B,C}} {[bisector](B,A,C)} +\TAline{\parg{pt1,pt2}}{[mediator]\parg{A,B}}{mediator of the segment $[A,B]$} +\TAline{\parg{pt1,pt2,pt3}}{[bisector]\parg{A,B,C}} {bisector of $\widehat{ABC}$} +\TAline{\parg{pt1,pt2,pt3}}{[altitude]\parg{A,B,C}} {altitude from $B$} +\TAline{\parg{pt1}}{[tangent at=A]\parg{O}} {tangent at $A$ on the circle center $O$} +\TAline{\parg{pt1,pt2}}{[tangent from=A]\parg{O,B}} {circle center $O$ through $B$} \end{tabular} \medskip @@ -27,13 +29,18 @@ options & default & definition \\ \TOline{orthogonal=through\dots}{mediator}{see above } \TOline{parallel=through\dots}{mediator}{parallel to a straight line passing through a point} \TOline{bisector}{mediator}{bisector of an angle defined by three points} -\TOline{bisector out}{mediator}{Exterior Angle Bisector} +\TOline{bisector out}{mediator}{exterior angle bisector} +\TOline{symmedian}{mediator}{symmedian from a vertex } +\TOline{altitude}{mediator}{altitude from avertex} +\TOline{euler}{mediator}{euler line of a triangle } +\TOline{tangent at}{mediator}{tangent at a point of a circle } +\TOline{tangent from}{mediator}{tangent from an exterior point } \TOline{K}{1}{coefficient for the perpendicular line} \TOline{normed}{false}{normalizes the created segment} \end{tabular} \end{NewMacroBox} -\subsubsection{Example with \tkzname{mediator}} +\subsubsection{With \tkzname{mediator}} \begin{tkzexample}[latex=5 cm,small] \begin{tikzpicture}[rotate=25] \tkzDefPoints{-2/0/A,1/2/B} @@ -48,7 +55,48 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsubsection{Example with \tkzname{bisector} and \tkzname{normed}} +\subsubsection{An envelope with option \tkzname{mediator}} +Based on a figure from O. Reboux with pst-eucl by D Rodriguez. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.6] + % necessary +\tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] +\tkzClip +\tkzSetUpLine[thin,color=magenta] +\tkzDefPoint(0,0){O} +\tkzDefPoint(132:4){A} +\tkzDefPoint(5,0){B} +\foreach \ang in {5,10,...,360}{% + \tkzDefPoint(\ang:5){M} + \tkzDefLine[mediator](A,M) + \tkzGetPoints{x}{y} + \tkzDrawLine[add= 3 and 3](x,y)} +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{A parabola with option \tkzname{mediator}} +Based on a figure from O. Reboux with pst-eucl by D Rodriguez. +It is not necessary to name the two points that define the mediator. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.6] +\tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] +\tkzClip +\tkzSetUpLine[thin,color=teal] +\tkzDefPoint(0,0){O} +\tkzDefPoint(132:5){A} +\tkzDefPoint(4,0){B} +\foreach \ang in {5,10,...,360}{% + \tkzDefPoint(\ang:4){M} + \tkzDefLine[mediator](A,M) + \tkzGetPoints{x}{y} + \tkzDrawLine[add= 3 and 3](x,y)} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{With options \tkzname{bisector} and \tkzname{normed}} \begin{tkzexample}[latex=7 cm,small] \begin{tikzpicture}[rotate=25,scale=.75] \tkzDefPoints{0/0/C, 2/-3/A, 4/0/B} @@ -59,7 +107,27 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsubsection{Example with \tkzname{orthogonal} and \tkzname{parallel}} +\subsubsection{With option \tkzname{parallel=through}} % (fold) +\label{ssub:parallel} +Archimedes' Book of Lemmas proposition 1 + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/O_1,0/1/O_2,0/3/A} + \tkzDefPoint(15:3){F} + \tkzInterLC(F,O_1)(O_1,A) \tkzGetSecondPoint{E} + \tkzDefLine[parallel=through O_2](E,F) \tkzGetPoint{x} + \tkzInterLC(x,O_2)(O_2,A) \tkzGetPoints{D}{C} + \tkzDrawCircles(O_1,A O_2,A) + \tkzDrawSegments[new](O_1,A E,F C,D) + \tkzDrawSegments[purple](A,E A,F) + \tkzDrawPoints(A,O_1,O_2,E,F,C,D) + \tkzLabelPoints(A,O_1,O_2,E,F,C,D) + \end{tikzpicture} +\end{tkzexample} +% subsubsection parallel (end) + +\subsubsection{With option \tkzname{orthogonal} and \tkzname{parallel}} \begin{tkzexample}[latex=5 cm,small] \begin{tikzpicture} \tkzDefPoints{-1.5/-0.25/A,1/-0.75/B,-0.7/1/C} @@ -78,71 +146,43 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsubsection{An envelope} -Based on a figure from O. Reboux with pst-eucl by D Rodriguez. - -\begin{tkzexample}[vbox,small] -\begin{tikzpicture}[scale=.75] - \tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] % necessary - \tkzClip - \tkzDefPoint(0,0){O} - \tkzDefPoint(132:4){A} - \tkzDefPoint(5,0){B} - \foreach \ang in {5,10,...,360}{% - \tkzDefPoint(\ang:5){M} - \tkzDefLine[mediator](A,M) - \tkzDrawLine[color=magenta,add= 3 and 3](tkzFirstPointResult,tkzSecondPointResult)} +\subsubsection{With option \tkzname{altitude}} % (fold) +\label{sub:altitude} +\begin{tkzexample}[latex=7 cm,small] +\begin{tikzpicture} +\tkzDefPoints{0/0/A,6/0/B,0.8/4/C} +\tkzDefLine[altitude](A,B,C) \tkzGetPoint{b} +\tkzDefLine[altitude](B,C,A) \tkzGetPoint{c} +\tkzDefLine[altitude](B,A,C) \tkzGetPoint{a} +\tkzDrawPolygon(A,B,C) +\tkzDrawPoints[blue](a,b,c) +\tkzDrawSegments[blue](A,a B,b C,c) +\tkzLabelPoints(A,B,c) +\tkzLabelPoints[above](C,a) +\tkzLabelPoints[above left](b) \end{tikzpicture} \end{tkzexample} -\subsubsection{A parabola} -Based on a figure from O. Reboux with pst-eucl by D Rodriguez. -It is not necessary to name the two points that define the mediator. +% subsection altitude (end) -\begin{tkzexample}[vbox,small] -\begin{tikzpicture}[scale=.75] - \tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] - \tkzClip - \tkzDefPoint(0,0){O} - \tkzDefPoint(132:5){A} - \tkzDefPoint(4,0){B} - \foreach \ang in {5,10,...,360}{% - \tkzDefPoint(\ang:4){M} - \tkzDefLine[mediator](A,M) - \tkzDrawLine[color=teal,add= 3 and 3](tkzFirstPointResult,tkzSecondPointResult)} + +\subsubsection{ With option \tkzname{euler}} % (fold) +\label{sub:eulerline} +\begin{tkzexample}[latex=7 cm,small] +\begin{tikzpicture} +\tkzDefPoints{0/0/A,6/0/B,0.8/4/C} +\tkzDefLine[euler](A,B,C) \tkzGetPoints{h}{e} +\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{o} +\tkzDrawPolygon[teal](A,B,C) +\tkzDrawPoints[red](A,B,C,h,e,o) +\tkzDrawLine[add= 2 and 2](h,e) +\tkzLabelPoints(A,B,C,h,e,o) +\tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} +% subsection eulerline (end) -%<----------------------------------------------------------------------------> -\subsection{Specific lines: Tangent to a circle} -Two constructions are proposed. The first one is the construction of a tangent to a circle at a given point of this circle and the second one is the construction of a tangent to a circle passing through a given point outside a disc. - -\begin{NewMacroBox}{tkzDefTangent}{\oarg{local options}\parg{pt1,pt2} or \parg{pt1,dim}}% -The parameter in brackets is the center of the circle or the center of the circle and a point on the circle or the center and the radius. This macro replaces the old one: \tkzcname{tkzTangent}. - -\medskip -\begin{tabular}{lll}% -\toprule -arguments & example & explanation \\ -\midrule -\TAline{\parg{pt1,pt2 or \parg{pt1,dim}} }{\parg{A,B} or \parg{A,2cm}} {$[AB]$ is radius $A$ is the center} -\bottomrule -\end{tabular} - -\medskip -\begin{tabular}{lll}% -options & default & definition \\ -\midrule -\TOline{at=pt}{at}{tangent to a point on the circle} -\TOline{from=pt} {at}{tangent to a circle passing through a point} -\TOline{from with R=pt} {at}{idem, but the circle is defined by center = radius} -\bottomrule -\end{tabular} - -The tangent is not drawn. With option \tkzname{at}, a point of the tangent is given by \tkzname{tkzPointResult}. With option \tkzname{from} you get two points of the circle with \tkzname{tkzFirstPointResult} and \tkzname{tkzSecondPointResult}. You can choose between these two points by comparing the angles formed with the outer point, the contact point and the center. The two possible angles have different directions. Angle counterclockwise refers to \tkzname{tkzFirstPointResult}. -\end{NewMacroBox} - -\subsubsection{Example of a tangent passing through a point on the circle } +\subsubsection{Tangent passing through a point on the circle \tkzname{tangent at}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(0,0){O} @@ -151,22 +191,22 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \tkzGetPoint{A} \tkzDrawSegment(O,A) \tkzDrawCircle(O,A) - \tkzDefTangent[at=A](O) + \tkzDefLine[tangent at=A](O) \tkzGetPoint{h} \tkzDrawLine[add = 4 and 3](A,h) \tkzMarkRightAngle[fill=teal!30](O,A,h) \end{tikzpicture} \end{tkzexample} -\subsubsection{Choice of contact point with tangents passing through an external point} +\subsubsection{Choice of contact point with tangents passing through an external point option \tkzname{tangent from}} + +The tangent is not drawn. With option \tkzname{at}, a point of the tangent is given by \tkzname{tkzPointResult}. With option \tkzname{from} you get two points of the circle with \tkzname{tkzFirstPointResult} and \tkzname{tkzSecondPointResult}. You can choose between these two points by comparing the angles formed with the outer point, the contact point and the center. The two possible angles have different directions. Angle counterclockwise refers to \tkzname{tkzFirstPointResult}. + \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1,rotate=-30] -\tkzDefPoints{ %x y name - 0 /0 /Q, - 0 /2 /A, - 6 /-1 /O} -\tkzDefTangent[from = O](Q,A) \tkzGetPoints{R}{S} -\tkzInterLC[near](O,Q)(Q,A) \tkzGetPoints{M}{N} +\tkzDefPoints{0/0/Q,0/2/A,6/-1/O} +\tkzDefLine[tangent from = O](Q,A) \tkzGetPoints{R}{S} +\tkzInterLC[near](O,Q)(Q,A) \tkzGetPoints{M}{N} \tkzDrawCircle(Q,M) \tkzDrawSegments[new,add = 0 and .2](O,R O,S) \tkzDrawSegments[gray](N,O R,Q S,Q) @@ -182,9 +222,6 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \end{tikzpicture} \end{tkzexample} - - - \subsubsection{Example of tangents passing through an external point } \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.8] @@ -194,7 +231,7 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \foreach \an in {0,10,...,350}{ \tkzDefPointBy[rotation=center c angle \an](a0) \tkzGetPoint{a} - \tkzDefTangent[from = a](c,d) + \tkzDefLine[tangent from = a](c,d) \tkzGetPoints{e}{f} \tkzDrawLines(a,f a,e) \tkzDrawSegments(c,e c,f)} @@ -202,27 +239,28 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \end{tkzexample} \subsubsection{Example of Andrew Mertz} + \begin{tkzexample}[latex=6cm,small] - \begin{tikzpicture}[scale=.5] + \begin{tikzpicture}[scale=.6] \tkzDefPoint(100:8){A}\tkzDefPoint(50:8){B} \tkzDefPoint(0,0){C} \tkzDefPoint(0,-4){R} \tkzDrawCircle(C,R) - \tkzDefTangent[from = A](C,R) \tkzGetPoints{D}{E} - \tkzDefTangent[from = B](C,R) \tkzGetPoints{F}{G} + \tkzDefLine[tangent from = A](C,R) \tkzGetPoints{D}{E} +\tkzDefLine[tangent from = B](C,R) \tkzGetPoints{F}{G} \tkzDrawSector[fill=teal!20,opacity=0.5](A,E)(D) \tkzFillSector[color=teal,opacity=0.5](B,G)(F) \end{tikzpicture} \end{tkzexample} \url{http://www.texample.net/tikz/examples/} -\subsubsection{Drawing a tangent option \tkzimp{from}} +\subsubsection{Drawing a tangent option \tkzname{tangent from}} \begin{tkzexample}[latex=6cm,small] -\begin{tikzpicture}[scale=.5] +\begin{tikzpicture}[scale=.6] \tkzDefPoint(0,0){B} \tkzDefPoint(0,8){A} \tkzDefSquare(A,B) \tkzGetPoints{C}{D} - \tkzDrawSquare(A,B) + \tkzDrawPolygon(A,B,C,D) \tkzClipPolygon(A,B,C,D) \tkzDefPoint(4,8){F} \tkzDefPoint(4,0){E} @@ -230,7 +268,7 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \tkzFillPolygon[color = green](A,B,C,D) \tkzDrawCircle[fill = orange](B,A) \tkzDrawCircle[fill = purple](E,B) - \tkzDefTangent[from=B](F,A) + \tkzDefLine[tangent from = B](F,A) \tkzInterLL(F,tkzSecondPointResult)(C,D) \tkzInterLL(A,tkzPointResult)(F,E) \tkzDrawCircle[fill = yellow](tkzPointResult,Q) diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex index 1d59e074f4e..29130c55648 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex @@ -17,26 +17,27 @@ fontsize = 10, index = totoc, twoside, - headings = small, - cadre + cadre, + headings = small ]{tkz-doc} %\usepackage{etoc} \gdef\tkznameofpack{tkz-euclide} -\gdef\tkzversionofpack{4.05b} -\gdef\tkzdateofpack{2022/02/07} +\gdef\tkzversionofpack{4.2c} +\gdef\tkzdateofpack{\today} \gdef\tkznameofdoc{doc-tkz-euclide} -\gdef\tkzversionofdoc{4.05b} -\gdef\tkzdateofdoc{2022/02/07} +\gdef\tkzversionofdoc{4.2c} +\gdef\tkzdateofdoc{\today} \gdef\tkzauthorofpack{Alain Matthes} \gdef\tkzadressofauthor{} \gdef\tkznamecollection{AlterMundus} \gdef\tkzurlauthor{http://altermundus.fr} \gdef\tkzengine{lualatex} \gdef\tkzurlauthorcom{http://altermundus.fr} +\nameoffile{\tkznameofpack} % -- Packages --------------------------------------------------- \usepackage[dvipsnames,svgnames]{xcolor} \usepackage{calc} -\usepackage{tkz-euclide} +\usepackage{tkz-base,tkz-euclide,pgfornament} \usetikzlibrary{backgrounds} \usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref} \hypersetup{ @@ -86,128 +87,38 @@ %\usepackage{unicode-math} \usepackage[math-style=literal,bold-style=literal]{unicode-math} \usepackage{fourier-otf} -\makeatletter -\if@tkzcadre \usepackage{zorna} \fi -\makeatother -\usepackage{datetime,multicol,lscape} +\let\rmfamily\ttfamily +\usepackage{multicol,lscape} \usepackage[english]{babel} \usepackage[normalem]{ulem} -\usepackage{array,multirow,multido,booktabs} +\usepackage{multirow,multido,booktabs,cellspace} \usepackage{shortvrb,fancyvrb,bookmark} - -\renewcommand{\labelitemi}{--} -\setlength\parindent{0pt} -\RedeclareSectionCommand[tocnumwidth=3.5em]{part} -\RedeclareSectionCommand[tocnumwidth=3.5em]{section} -\RedeclareSectionCommand[tocnumwidth=3.5em]{subsection} -\RedeclareSectionCommand[tocnumwidth=3.5em]{subsubsection} -\renewcommand\partheadstartvskip{\clearpage\null\vfil} -\renewcommand\partheadmidvskip{\par\nobreak\vskip 20pt\thispagestyle{empty}} -\renewcommand\partheadendvskip{\vfil\clearpage} -\renewcommand\raggedpart{\centering} -\RequirePackage{makeidx} +\usepackage{makeidx} \makeindex -% \def\tkzref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}} -% \renewenvironment{tkzexample}[1][]{% -% \tkz@killienc \VerbatimOut{tkzeuclide-\tkzref.tex}% -% }{% -% \endVerbatimOut -% } -%<---------------------------------------------------------------------------> -\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb -\makeatletter -% We need to save the node -% Every append after command might be useful to have this code -\def\savelastnode{\pgfextra\edef\tmpA{\tikzlastnode}\endpgfextra} -\def\restorelastnode{\pgfextra\edef\tikzlastnode{\tmpA}\endpgfextra} -% Define box and box title style -\tikzstyle{mybox} = [draw=blue!50!black, very thick, - rectangle, rounded corners, inner sep=10pt, inner ysep=20pt,text=darkgray] -\tikzstyle{fancytitle} =[fill=MidnightBlue!20, text=blue!50!black,rounded corners] -\tikzstyle{title} = [append after command={% - \savelastnode node[fancytitle,right=10pt] at (\tikzlastnode.north west)% - {#1}\restorelastnode}] -\makeatother - -\newcommand{\red}{\color{BrickRed}} -\newcommand{\orange}{\color{PineGreen}} -\newcommand{\blanc}{\color{White}} -\newcommand{\ntt}{\normalfont\ttfamily} -% command name -\newcommand{\cn}[1]{{\protect\ntt\bslash#1}} -% LaTeX package name -% File name -\newcommand{\fn}[1]{{\protect\ntt#1}} -% environment name -\newcommand{\env}[1]{{\protect\ntt#1}} -\hfuzz1pc % Don't bother to report overfull boxes if overage is < 1pc - -\newcommand{\pkg}[1]{{\protect\ntt#1}} - -% settings +%<---------------------------------------------------------------------------> +% settings styles \tkzSetUpColors[background=white,text=black] -\tkzSetUpCompass[color=orange, line width=.4pt,delta=10] -\tkzSetUpArc[color=gray,line width=.4pt] +\tkzSetUpCompass[color=orange, line width=.2pt,delta=10] +\tkzSetUpArc[color=gray,line width=.2pt] \tkzSetUpPoint[size=2,color=teal] -\tkzSetUpLine[line width=.4pt,color=teal] -\tkzSetUpStyle[color=orange,ultra thin]{new} -\tikzset{every picture/.style={line width=.4pt}} -\tikzset{label angle style/.append style={color=teal,font=\footnotesize}} -\tikzset{new/.style={color=orange,ultra thin}} -%\tikzset{label style/.append style={color=teal,font=\footnotesize}} - -\newcommand{\tkzsubf}[2]{% - {\small\begin{tabular}[t]{@{}c@{}} - #1\\#2 - \end{tabular}}% -} - +\tkzSetUpLine[line width=.2pt,color=teal] +\tkzSetUpStyle[color=orange,line width=.2pt]{new} +\tikzset{every picture/.style={line width=.2pt}} +\tikzset{label angle style/.append style={color=teal,font=\footnotesize}} +\tikzset{label style/.append style={below,color=teal,font=\scriptsize}} +\tikzset{new/.style={color=orange,line width=.2pt}} +\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb \begin{document} - \parindent=0pt -\author{\tkzauthorofpack} -\title{\tkznameofpack} -\date{\today} +\tkzTitleFrame{tkz-euclide\\Euclidean Geometry} \clearpage -\thispagestyle{empty} -\maketitle -\null -\makeatletter -\if@tkzcadre -\AddToShipoutPicture*{% -\setlength\unitlength{1mm} -\put(70,120){% -\begin{tikzpicture} - \node at (30pt,30pt){\fontsize{60}{60}\selectfont \zorna{c}}; - \node at (270pt,30pt){\fontsize{60}{60}\selectfont \zorna{d}}; - \node at (30pt,210pt){\fontsize{60}{60}\selectfont \zorna{a}}; - \node at (270pt,210pt){\fontsize{60}{60}\selectfont \zorna{b}}; - \draw[line width=2pt,double,color=MidnightBlue, - fill=myblue!10,opacity=.5] (0,0) rectangle (300pt,240pt); - \node[text width=240pt] at (150 pt,120 pt){% - \begin{center} - \color{MidnightBlue} - \fontsize{24}{48} - \selectfont tkz-euclide\\ - tool for \\ - Euclidean Geometry - \end{center}}; -\end{tikzpicture}} -} -\else -\fi -\makeatother -\clearpage -\tkzSetUpColors[background=white,text=darkgray] - -\let\rmfamily\ttfamily -\nameoffile{\tkznameofpack} \defoffile{\lefthand\ -\tkzname{\tkznameofpack} 4.00 is now independent of tkz-base. It is a set of convenient macros for drawing in a plane (fundamental two-dimensional object) with a Cartesian coordinate system. It handles the most classic situations in Euclidean Geometry. \tkzname{\tkznameofpack} is built on top of PGF and its associated front-end \TIKZ\ and is a (La)TeX-friendly drawing package. The aim is to provide a high-level user interface to build graphics relatively simply. The idea is to allow you to follow step by step a construction that would be done by hand as naturally as possible.\\ +From version 4.00, \tkzname{\tkznameofpack} became independent from \tkzname{tkz-base} . This has implied some changes : the next major step will be the version 5 which will see the introduction of Lua. To prepare for this change, I removed the last macros that allowed to plot and define at the same time. Indeed Lua will be there to make all the calculations and define all the necessary nodes. As for \TIKZ\ , it will remain to carry out the tracings, the markings and the labels.\\ +\tkzname{\tkznameofpack} is a set of convenient macros for drawing in a plane (fundamental two-dimensional object) with a Cartesian coordinate system. It handles the most classic situations in Euclidean Geometry. \tkzname{\tkznameofpack} is built on top of PGF and its associated front-end \TIKZ\ and is a (La)TeX-friendly drawing package. The aim is to provide a high-level user interface to build graphics relatively simply. The idea is to allow you to follow step by step a construction that would be done by hand as naturally as possible.\\ English is not my native language so there might be some errors. } @@ -240,53 +151,53 @@ Project Public License Distributed from \href{http://www.ctan.org/}{CTAN}\ arch \newpage \part{General survey : a brief but comprehensive review} -\include{TKZdoc-euclide-installation} -\include{TKZdoc-euclide-presentation} -\include{TKZdoc-euclide-elements} -\include{TKZdoc-euclide-news} - +\input{TKZdoc-euclide-news.tex} +\input{TKZdoc-euclide-installation.tex} +\input{TKZdoc-euclide-presentation.tex} +\input{TKZdoc-euclide-elements.tex} +\input{TKZdoc-euclide-documentation.tex} \part{Setting} -\include{TKZdoc-euclide-points} +\input{TKZdoc-euclide-points.tex} \part{Calculating} -\include{TKZdoc-euclide-pointsSpc} -\include{TKZdoc-euclide-pointby} -\include{TKZdoc-euclide-pointwith} -\include{TKZdoc-euclide-lines} -\include{TKZdoc-euclide-triangles} -\include{TKZdoc-euclide-polygons} -\include{TKZdoc-euclide-circles} -\include{TKZdoc-euclide-circleby} -\include{TKZdoc-euclide-intersec} -\include{TKZdoc-euclide-angles} -\include{TKZdoc-euclide-rnd} +\input{TKZdoc-euclide-pointsSpc.tex} +\input{TKZdoc-euclide-pointby.tex} +\input{TKZdoc-euclide-pointwith.tex} +\input{TKZdoc-euclide-lines.tex} +\input{TKZdoc-euclide-triangles.tex} +\input{TKZdoc-euclide-polygons} +\input{TKZdoc-euclide-circles.tex} +\input{TKZdoc-euclide-circleby.tex} +\input{TKZdoc-euclide-intersection.tex} +\input{TKZdoc-euclide-angles.tex} +\input{TKZdoc-euclide-rnd.tex} \part{Drawing and Filling} -\include{TKZdoc-euclide-drawing} -\include{TKZdoc-euclide-filling} -\include{TKZdoc-euclide-clipping} +\input{TKZdoc-euclide-drawing.tex} +\input{TKZdoc-euclide-filling.tex} +\input{TKZdoc-euclide-clipping.tex} \part{Marking} -\include{TKZdoc-euclide-marking} +\input{TKZdoc-euclide-marking.tex} \part{Labelling} -\include{TKZdoc-euclide-labelling} +\input{TKZdoc-euclide-labelling.tex} \part{Complements} -\include{TKZdoc-euclide-compass} -\include{TKZdoc-euclide-show} -\include{TKZdoc-euclide-rapporteur} -\include{TKZdoc-euclide-tools} +\input{TKZdoc-euclide-compass.tex} +\input{TKZdoc-euclide-show.tex} +\input{TKZdoc-euclide-rapporteur.tex} +\input{TKZdoc-euclide-tools.tex} \part{Working with style} -\include{TKZdoc-euclide-styles} +\input{TKZdoc-euclide-styles.tex} \part{Examples} -\include{TKZdoc-euclide-others} -\include{TKZdoc-euclide-examples} +\input{TKZdoc-euclide-others.tex} +\input{TKZdoc-euclide-examples.tex} \part{FAQ} -\include{TKZdoc-euclide-FAQ} +\input{TKZdoc-euclide-FAQ.tex} \clearpage\newpage \small\printindex diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex index 209aca27d97..c23d56a4602 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex @@ -294,6 +294,7 @@ options & default & definition \\ \tkzDrawPoints(O,A,B) \end{tikzpicture} \end{tkzexample} + \MakeShortVerb{\|} \begin{NewMacroBox}{tkzMarkAngles}{\oarg{local options}\parg{A,O,B}\parg{A',O',B'}etc.}% With common options, there is a macro for multiple angles. @@ -355,7 +356,7 @@ options & default & definition \\ \tkzMarkRightAngle[german,size=.8,color=blue](B,H,C) \tkzFillAngle[opacity=.2,fill=blue!20,size=.8](B,H,C) \tkzLabelPoints(A,B,C,H) - \tkzDrawPoints(A,B,C) + \tkzDrawPoints(A,B,C,H) \end{tikzpicture} \end{tkzexample} @@ -395,4 +396,57 @@ options & default & definition \\ With common options, there is a macro for multiple angles. \end{NewMacroBox} +\subsection{Angles Library} % (fold) +\label{sub:angles_library} + +If you prefer to use \TIKZ\ library \tkzname{angles}, you can mark angles with the macro \tkzcname{tkzPicAngle} and \tkzcname{tkzPicRightAngle}. + +\begin{NewMacroBox}{tkzPicAngle}{\oarg{tikz options}\parg{A,O,B}}% + +\medskip +\begin{tabular}{lll}% +\toprule +options & example & definition \\ +\midrule +\TOline{tikz option}{see below}{drawing of the angle $\widehat{AOB}$.} +\end{tabular} +\end{NewMacroBox} + +\begin{NewMacroBox}{tkzPicRightAngle}{\oarg{tikz options}\parg{A,O,B}}% + +\medskip +\begin{tabular}{lll}% +\toprule +options & example & definition \\ +\midrule +\TOline{tikz option}{see below}{drawing of the right angle $\widehat{AOB}$.} +\end{tabular} + +\medskip +\emph{You need to know possible options of the \tkzname{angles} library} +\end{NewMacroBox} + +\subsubsection{Angle with \TIKZ} % (fold) +\label{ssub:angle_with_tikz} + + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture} + \tkzDefPoints{0/0/A,4/0/B} + \tkzDefTriangle[right,swap](A,B) \tkzGetPoint{C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints[below](B,A) + \tkzLabelPoints[above right](C) + \tkzPicAngle["$\alpha$",draw=orange, + <->,angle eccentricity=1.2, + angle radius=1cm](B,A,C) + \tkzPicRightAngle[draw,red,thick, + angle eccentricity=.5, + pic text=.](C,B,A) + \end{tikzpicture} +\end{tkzexample} + +% subsubsection angle_with_tikz (end) +% subsection angles_library (end) \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex index 57bb41c3d36..438c869ddfe 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex @@ -1,20 +1,129 @@ -\section{News and compatibility} +\section*{News and compatibility} + +\subsection{With 4.2 version} % (fold) +\label{sub:with_4_2_version} Some changes have been made to make the syntax more homogeneous and especially to distinguish the definition and search for coordinates from the rest, i.e. drawing, marking and labelling. -In the future, the definition macros being isolated, it will be easier to introduce a phase of coordinate calculations using \tkzimp{Lua}. +Now the definition macros are isolated, it will be easier to introduce a phase of coordinate calculations using \tkzimp{Lua}. + +Here are some of the changes. +\vspace{1cm} + \begin{itemize}\setlength{\itemsep}{10pt} + + +\item I recently discovered a problem when using the "scale" option. When plotting certain figures with certain tools, extensive use of |pgfmathreciprocal| involves small computational errors but can add up and render the figures unfit. Here is how to proceed to avoid these problems: +\begin{enumerate} + + \item On my side I introduced a patch proposed by Muzimuzhi that modifies +|pgfmathreciprocal|; + +\item Another idea proposed by Muzimuzhi is to pass as an option for the |tikzpicture| environment this |/pgf/fpu/install only={reciprocal}| after loading of course the |fpu| library; + +\item I have in the methods chosen to define my macros tried to avoid as much as possible the use of |pgfmathreciprocal|; + +\item There is still a foolproof method which consists in avoiding the use of |scale = ...|. It's quite easy if, like me, you only work with fixed points fixed at the beginning of your code. The size of your figure depends only on these fixed points so you just have to adapt the coordinates of these. +\end{enumerate} + +\item Now |\tkzDefCircle| gives two points as results: the center of the circle and a point of the circle. When a point of the circle is known, it is enough to use |\tkzGetPoint| or |\tkzGetFirstPoint| +to get the center, otherwise |\tkzGetPoints| will give you the center and a point of the circle. You can always get the length of the radius with |\tkzGetLength|. I wanted to favor working with nodes and banish the appearance of numbers in the code. + +\item In order to isolate the definitions, I deleted or modified certain macros which are: |\tkzDrawLine|, |\tkzDrawTriangle|, |\tkzDrawCircle|, |\tkzDrawSemiCircle| and |\tkzDrawRectangle|; + +Thus |\tkzDrawSquare(A,B)| becomes |\tkzDefSquare(A,B)||\tkzGetPoints{C}{D}| then + + |\tkzDrawPolygon(A,B,C,D)|; + +If you want to draw a circle, you can't do so |\tkzDrawCircle[R](A,1)|. First you have to define the point through which the circle passes, so you have to do +|\tkzDefCircle[R](A,1)| |\tkzGetPoint{a}| and finally |\tkzDrawCircle(A,a)|. Another possibilty is to define a point on the circle |\tkzDefShiftPoint[A](1,O){a}|; + + +\item The following macros |tkzDefCircleBy[orthogonal through]| and |\tkzDefCircleBy[orthogonal from]| become |tkzDefCircle[orthogonal through]| and |\tkzDefCircle[orthogonal from]| ; + + +\item |\tkzDefLine[euler](A,B,C)| is a macro that allows you to obtain the line of \tkzname{Euler} when possible. |\tkzDefLine[altitude](A,B,C)| is possible again, as well as |\tkzDefLine[tangent at=A](O)| and |\tkzDefLine[tangent from=P](O,A)| which did not works; + + +\item | \tkzDefTangent| is replaced by |\tkzDelLine[tangent from = ...]| or |\tkzDelLine[tangent at = ...]| + + +\item I added the macro |\tkzPicAngle[tikz options](A,B,C)| for those who prefer to use \TIKZ\ . + +\item +The order of the arguments of the macro \tkzcname{tkzDefPointOnCircle} has changed: now it is center, angle and point or radius. +I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}. + + +\item I added the option \tkzname{reverse} to the arcs paths. This allows to reverse the path and to reverse if necessary the arrows that would be present. + + +\item I have unified the styles for the labels. There is now only \tkzname{label style} left which is valid for points, segments, lines, circles and angles. I have deleted \tkzname{label seg style} \tkzname{label line style} and \tkzname{label angle style} + +\item I added the macro |tkzFillAngles| to use several angles. +\item Correction option \tkzname{return} witk \tkzcname{tkzProtractor} +As a reminder, the following changes have been made previously: + + \item |\tkzDrawMedian|, |\tkzDrawBisector|, |\tkzDrawAltitude|, |\tkzDrawMedians|, |\tkzDrawBisectors| et |\tkzDrawAltitudes| do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with |\tkzDefSpcTriangle[median]| and then to choose the ones you are going to draw with |\tkzDrawSegments| or |\tkzDrawLines|; + +\item |\tkzDrawTriangle| has been deleted. |\tkzDrawTriangle[equilateral]| was handy but it is better to get the third point with |\tkzDefTriangle[equilateral]| and then draw with |\tkzDrawPolygon|; idem for |\tkzDrawSquare| and |\tkzDrawGoldRectangle|; + + +\item The circle inversion was badly defined so I rewrote the macro. The input arguments are always the center and a point of the circle, the output arguments are the center of the image circle and a point of the image circle or two points of the image line if the antecedent circle passes through the pole of the inversion. If the circle passes the inversion center, the image is a straight line, the validity of the procedure depends on the choice of the point on the antecedent circle; + +\item Correct allocation for gold sublime and euclide triangles; + + +\item I added the option " next to" for the intersections LC and CC; + + +\item Correction option isoceles right; -Here are some of the changes. I'm sorry but the list of changes and novelties is made in the greatest disorder! + +\item |\tkzDefMidArc(O,A,B)| gives the middle of the arc center $O$ from $A$ to $B$; + +\item Good news : Some useful tools have been added. They are present on an experimental basis and will undoubtedly need to be improved; + + +\item The options "orthogonal from and through" depend now of \tkzcname{tkzDefCircleBy} + +\begin{enumerate} + + \item |\tkzDotProduct(A,B,C)| computes the scalar product in an orthogonal reference system of the vectors $\overrightarrow{A,B}$ and $\overrightarrow{A,C}$. + + |\tkzDotProduct(A,B,C)=aa'+bb' if vec{AB} =(a,b) and vec{AC} =(a',b')| + + + \item |\tkzPowerCircle(A)(B,C)| power of point $A$ with respect to the circle of center $B$ passing through $C$; + + + \item |\tkzDefRadicalAxis(A,B)(C,D)| Radical axis of two circles of center $A$ and $C$; + + + \item Some tests : |\tkzIsOrtho(A,B,C)| and |\tkzIsLinear(A,B,C)| The first indicates whether the lines $(A,B)$ and $(A,C)$ are orthogonal. The second indicates whether the points $A$, $B$ and $C$ are aligned; + + |\tkzIsLinear(A,B,C)| if $A$,$B$,$C$ are aligned then |\tkzLineartrue| + you can use |\iftkzLinear| (idem for |\tkzIsOrtho|); + +\item A style for vectors has been added that you can of course modify +|tikzset{vector style/.style={>=Latex,->}}|; + + +\item Now it's possible to add an arrow on a line or a circle with the option |tkz arrow|. +\end{enumerate} +\end{itemize} + +% subsection with_4_2_version (end) +\subsection{Changes with previous versions} % (fold) +\label{sub:changes_with_previous_versions} \vspace{1cm} \begin{itemize}\setlength{\itemsep}{10pt} - -\item An important novelty is the recent replacement of the \tkzNamePack{fp} package by \tkzNamePack{xfp}. This is to improve the calculations a little bit more and to make it easier to use; -\item Improved code and bug fixes; +\item I remind you that an important novelty is the recent replacement of the \tkzNamePack{fp} package by \tkzNamePack{xfp}. This is to improve the calculations a little bit more and to make it easier to use; + -\item First of all, you don’t have to deal with Tik Z the size of the bounding box. Early versions of \tkzname{\tkznameofpack} did not control the size of the bounding box, The bounding box is now controlled in each macro (hopefully) to avoid the use of \tkzcname{tkzInit} followed by \tkzcname{tkzClip}; +\item First of all, you don’t have to deal with \TIKZ\ the size of the bounding box. Early versions of \tkzname{\tkznameofpack} did not control the size of the bounding box, The bounding box is now controlled in each macro (hopefully) to avoid the use of \tkzcname{tkzInit} followed by \tkzcname{tkzClip}; \item With \tkzimp{tkz-euclide} loads all objects, so there's no need to place \tkzcname{usetkzobj\{all\}}; @@ -37,15 +146,11 @@ Here are some of the changes. I'm sorry but the list of changes and novelties is \item The notion of vector disappears, to draw a vector just pass "->" as an option to \tkzcname{tkzDrawSegment}; -\item |\tkzDrawMedian|, |\tkzDrawBisector|, |\tkzDrawAltitude|, |\tkzDrawMedians|, |\tkzDrawBisectors| et |\tkzDrawAltitudes| do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with |\tkzDefSpcTriangle[median]| and then to choose the ones you are going to draw with |\tkzDrawSegments| or |\tkzDrawLines|; -\item |\tkzDefIntSimilitudeCenter| and |\tkzDefExtSimilitudeCenter| do not exist anymore; - -\item |\tkzDrawTriangle| has been deleted. |\tkzDrawTriangle[equilateral]| was handy but it is better to get the third point with |\tkzDefTriangle[equilateral]| and then draw with |\tkzDrawPolygon|; idem for |\tkzDrawSquare| and |\tkzDrawGoldRectangle|; +\item |\tkzDefIntSimilitudeCenter| and |\tkzDefExtSimilitudeCenter| do not exist anymore, now you need to use |\tkzDefSimilitudeCenter[int]| or |\tkzDefSimilitudeCenter[ext]|; \item |\tkzDefRandPointOn| is replaced by |\tkzGetRandPointOn|; -\item now |\tkzTangent| is replaced by |\tkzDefTangent|; \item An option of the macro \tkzcname{tkzDefTriangle} has changed, in the previous version the option was "euclide" with an "e". Now it's "euclid"; @@ -62,5 +167,6 @@ Here are some of the changes. I'm sorry but the list of changes and novelties is \item The styles can be modified with the help of the following macros : \tkzcname{tkzSetUpPoint}, \tkzcname{tkzSetUpLine}, \tkzcname{tkzSetUpArc}, \tkzcname{tkzSetUpCompass}, \tkzcname{tkzSetUpLabel} and \tkzcname{tkzSetUpStyle}. The last one allows you to create a new style. \end{itemize} +% subsection changes_with_previous_versions (end) \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex index a47fc850752..0548bbaf6ae 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex @@ -61,11 +61,11 @@ Another possiblity is to use \tkzcname{tkzFillAngle}. \tkzGetPoint{B} \tkzDefPointBy[rotation=center O angle -50](N) \tkzGetPoint{A} - \tkzInterLC(M,B)(O,N) \tkzGetFirstPoint{C} - \tkzInterLC(M,A)(O,N) \tkzGetSecondPoint{A'} + \tkzInterLC[common=B](M,B)(O,B) \tkzGetFirstPoint{C} + \tkzInterLC[common=A](M,A)(O,A) \tkzGetFirstPoint{A'} \tkzMarkAngle[mkpos=.2, size=0.5](A,C,B) \tkzMarkAngle[mkpos=.2, size=0.5](A,M,C) - \tkzDrawSegments(A,C M,A M,B) + \tkzDrawSegments(A,C M,A M,B A,B) \tkzDrawCircle(O,N) \tkzLabelCircle[above left](O,N)(120){% $\mathcal{C}$} @@ -131,10 +131,10 @@ Another interesting example from John, you can see how to use some extra options \end{tkzexample} \subsection{Example 2: from Indonesia} -\begin{tkzexample}[vbox,small] - \begin{tikzpicture}[pol/.style={fill=brown!40,opacity=.5}, +\begin{tkzexample}[vbox,overhang,small] + \begin{tikzpicture}[pol/.style={fill=brown!40,opacity=.2}, seg/.style={tkzdotted,color=gray}, hidden pt/.style={fill=gray!40}, - mra/.style={color=gray!70,tkzdotted,/tkzrightangle/size=.2},scale=1.5] + mra/.style={color=gray!70,tkzdotted,/tkzrightangle/size=.2},scale=2] \tkzDefPoints{0/0/A,2.5/0/B,1.33/0.75/D,0/2.5/E,2.5/2.5/F} \tkzDefLine[parallel=through D](A,B) \tkzGetPoint{I1} \tkzDefLine[parallel=through B](A,D) \tkzGetPoint{I2} @@ -277,44 +277,7 @@ Advanced Mathematics, Drawing geometry pictures. }; \end{tikzpicture} -\begin{tikzpicture} - \tkzDefPoint(0,0){A} \tkzDefPoint(4,1){B} - \tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{D} - \tkzInterLC(A,B)(B,A) \tkzGetPoints{F}{E} - \tkzDrawCircles[dashed](A,B B,A) - \tkzDrawPolygons(A,B,C A,E,D) - - \tkzCompasss[color=red, very thick](A,C B,C A,D B,D) - \begin{scope} - \tkzSetUpArc[thick,delta=0] - \tkzDrawArc[fill=blue!10](A,B)(C) - \tkzDrawArc[fill=blue!10](B,C)(A) - \tkzDrawArc[fill=blue!10](C,A)(B) - \end{scope} - \tkzMarkAngles(D,A,E A,E,D) - \tkzFillAngles[fill=yellow,opacity=0.5](D,A,E A,E,D) - \tkzMarkRightAngle[size=0.65,fill=red!20,opacity=0.2](A,D,E) - - \tkzLabelAngle[pos=0.7](D,A,E){$\alpha$} - \tkzLabelAngle[pos=0.8](A,E,D){$\beta$} - \tkzLabelAngle[pos=0.5,xshift=-1.4mm](A,D,D){$90^\circ$} - \begin{scope}[font=\small] - \tkzLabelSegment[below=0.6cm,align=center](A,B){Reuleaux\\triangle} - \tkzLabelSegment[above right,sloped](A,E){hypotenuse} - \tkzLabelSegment[below,sloped](D,E){opposite} - \tkzLabelSegment[below,sloped](A,D){adjacent} - \tkzLabelSegment[below right=4cm](A,E){Thales circle} - \end{scope} - - \tkzLabelPoints[below left](A) - \tkzLabelPoints(B,D) - \tkzLabelPoint[above](C){$C$} - \tkzLabelPoints(E) - \tkzDrawPoints(A,...,E) - -\end{tikzpicture} - -\begin{tkzexample}[code only,small] +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoint(0,0){A} \tkzDefPoint(4,1){B} \tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{D} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointby.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointby.tex index a2f5584670a..67e357c625f 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointby.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointby.tex @@ -1,4 +1,4 @@ -\section{Definition of points by transformation : \tkzcname{tkzDefPointBy} } +\section{Definition of points by transformation} These transformations are: \begin{itemize} @@ -11,11 +11,13 @@ These transformations are: \item inversion with respect to a circle. \end{itemize} +\subsection{\tkzcname{tkzDefPointBy}} The choice of transformations is made through the options. There are two macros, one for the transformation of a single point \tkzcname{tkzDefPointBy} and the other for the transformation of a list of points \tkzcname{tkzDefPointsBy}. By default the image of $A$ is $A'$. For example, we'll write: \begin{tkzltxexample}[] \tkzDefPointBy[translation= from A to A'](B) \end{tkzltxexample} The result is in \tkzname{tkzPointResult} + \medskip \begin{NewMacroBox}{tkzDefPointBy}{\oarg{local options}\parg{pt}}% The argument is a simple existing point and its image is stored in \tkzname{tkzPointResult}. If you want to keep this point then the macro \tkzcname{tkzGetPoint\{M\}} allows you to assign the name \tkzname{M} to the point. @@ -44,11 +46,11 @@ options & & examples \\ \bottomrule \end{tabular} -The image is only defined and not drawn. +\medskip +\emph{The image is only defined and not drawn.} \end{NewMacroBox} -\subsection{Examples of transformations} -\subsubsection{translation} +\subsubsection{\tkzname{translation}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] @@ -61,7 +63,7 @@ The image is only defined and not drawn. \end{tikzpicture} \end{tkzexample} -\subsubsection{reflection (orthogonal symmetry)} +\subsubsection{\tkzname{reflection} (orthogonal symmetry)} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] @@ -217,7 +219,6 @@ Directly \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{4/0/A,6/0/P,0/0/O} - \tkzDefCircle(O,A) \tkzDefPointBy[inversion = center O through A](P) \tkzGetPoint{P'} \tkzDrawSegments(O,P) @@ -230,10 +231,9 @@ Directly \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{4/0/A,6/0/P,0/0/O} - \tkzDefCircle(O,A) \tkzDefLine[orthogonal=through P](O,P) \tkzGetPoint{L} - \tkzDefTangent[from = P](O,A) \tkzGetPoints{R}{Q} + \tkzDefLine[tangent from = P](O,A) \tkzGetPoints{R}{Q} \tkzDefPointBy[projection=onto O--A](Q) \tkzGetPoint{P'} \tkzDrawSegments(O,P O,A) \tkzDrawSegments[new](O,P O,Q P,Q Q,P') @@ -252,7 +252,7 @@ Directly \end{tkzexample} -\subsubsection{Inversion of lines} +\subsubsection{\tkzname{Inversion of lines} ex 1} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/O,3/0/I,4/3/P,6/-3/Q} @@ -262,7 +262,8 @@ Directly \tkzGetPoint{A'} \tkzDefPointBy[inversion = center O through I](P) \tkzGetPoint{P'} -\tkzDrawCircle[new,diameter](O,A') +\tkzDefCircle[diameter](O,A')\tkzGetPoint{o} +\tkzDrawCircle[new](o,A') \tkzDrawLines[add=.25 and .25,red](P,Q) \tkzDrawLines[add=.25 and .25](O,A) \tkzDrawSegments(O,P) @@ -270,6 +271,7 @@ Directly \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{inversion of lines} ex 2} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/O,3/0/I,3/2/P,3/-2/Q} @@ -279,7 +281,8 @@ Directly \tkzGetPoint{A'} \tkzDefPointBy[inversion = center O through I](P) \tkzGetPoint{P'} -\tkzDrawCircle[new,diameter](O,A') +\tkzDefCircle[diameter](O,A')\tkzGetPoint{o} +\tkzDrawCircle[new](o,A') \tkzDrawLines[add=.25 and .25,red](P,Q) \tkzDrawLines[add=.25 and .25](O,A) \tkzDrawSegments(O,P) @@ -287,6 +290,7 @@ Directly \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{inversion of lines} ex 3} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/O,3/0/I,2/1/P,2/-2/Q} @@ -296,7 +300,8 @@ Directly \tkzGetPoint{A'} \tkzDefPointBy[inversion = center O through I](P) \tkzGetPoint{P'} -\tkzDrawCircle[new,diameter](O,A') +\tkzDefCircle[diameter](O,A') +\tkzDrawCircle[new](I,A') \tkzDrawLines[add=.25 and .75,red](P,Q) \tkzDrawLines[add=.25 and .25](O,A') \tkzDrawSegments(O,P') @@ -304,31 +309,31 @@ Directly \end{tikzpicture} \end{tkzexample} - -\subsubsection{Inversion of circle} -\begin{tkzexample}[latex=6cm,small] -\begin{tikzpicture}[scale=.5] +\subsubsection{\tkzname{inversion} of circle and \tkzname{homothety} } +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.75] \tkzDefPoints{0/0/O,3/2/A,2/1/P} -\tkzDefTangent[from = O](A,P) \tkzGetPoints{T}{X} -\tkzDefPointsBy[homothety=center O ratio 1.25](A,P,T){} -\tkzInterCC(A,P)(A',P') \tkzGetPoints{C}{D} +\tkzDefLine[tangent from = O](A,P) \tkzGetPoints{T}{X} +\tkzDefPointsBy[homothety = center O% + ratio 1.25](A,P,T){} +\tkzInterCC(A,P)(A',P') \tkzGetPoints{C}{D} \tkzCalcLength(A,P) \tkzGetLength{rAP} -\tkzDefPointOnCircle[R= angle 190 center A radius \rAP] +\tkzDefPointOnCircle[R= center A angle 190 radius \rAP] \tkzGetPoint{M} \tkzDefPointBy[inversion = center O through C](M) \tkzGetPoint{M'} -\tkzDrawCircles(A,P A',P') +\tkzDrawCircles[new](A,P A',P') \tkzDrawCircle(O,C) \tkzDrawLines[add=0 and .5](O,T' O,A' O,M' O,P') \tkzDrawPoints(A,A',P,P',O,T,T',M,M') -\tkzLabelPoints(O,T,T') -\tkzLabelPoints[above left](M,M') +\tkzLabelPoints(O,T,T',M,M') \tkzLabelPoints[below](P,P') \end{tikzpicture} \end{tkzexample} -\subsubsection{Inversion of Triangle with respect to the Incircle} + +\subsubsection{\tkzname{inversion} of Triangle with respect to the Incircle} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=1] \tkzDefPoints{0/0/A,5/1/B,3/6/C} @@ -348,15 +353,15 @@ Directly \tkzDrawPolygon(A,B,C) \tkzDrawCircle(O,b)\tkzDrawPoints(A,B,C,O) \tkzDrawCircles[dashed,gray](Ja,y Jb,x Jc,z) -\tkzDrawArc[line width=1pt,orange](Jb,x)(z) -\tkzDrawArc[line width=1pt,orange](Jc,z)(y) -\tkzDrawArc[line width=1pt,orange](Ja,y)(x) +\tkzDrawArc[line width=1pt,orange,delta=0](Jb,x)(z) +\tkzDrawArc[line width=1pt,orange,delta=0](Jc,z)(y) +\tkzDrawArc[line width=1pt,orange,delta=0](Ja,y)(x) \tkzLabelPoint[below](A){$A$}\tkzLabelPoint[above](C){$C$} \tkzLabelPoint[right](B){$B$}\tkzLabelPoint[below](O){$O$} \end{tikzpicture} \end{tkzexample} -\subsubsection{Inversion: orthogonal circle with inversion circle} +\subsubsection{\tkzname{inversion}: orthogonal circle with inversion circle} The inversion circle itself, circles orthogonal to it, and lines through the inversion center are invariant under inversion. If the circle meets the reference circle, these invariant points of intersection are also on the inverse circle. See I and J in the next figure. \begin{tkzexample}[latex=5cm,small] @@ -364,7 +369,7 @@ The inversion circle itself, circles orthogonal to it, and lines through the inv \tkzDefPoint(0,0){O}\tkzDefPoint(1,0){A} \tkzDefPoint(-1.5,-1.5){z1} \tkzDefPoint(1.5,-1.25){z2} -\tkzDefCircleBy[orthogonal through=z1 and z2](O,A) +\tkzDefCircle[orthogonal through=z1 and z2](O,A) \tkzGetPoint{c} \tkzDrawCircle[new](c,z1) \tkzDefPointBy[inversion = center O through A](z1) @@ -379,28 +384,6 @@ The inversion circle itself, circles orthogonal to it, and lines through the inv \end{tikzpicture} \end{tkzexample} -\subsubsection{\tkzname{Inversion} and \tkzname{homothety} } -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=.75] -\tkzDefPoints{0/0/O,3/2/A,2/1/P} -\tkzDefTangent[from = O](A,P) \tkzGetPoints{T}{X} -\tkzDefPointsBy[homothety = center O% - ratio 1.25](A,P,T){} -\tkzInterCC(A,P)(A',P') \tkzGetPoints{C}{D} -\tkzCalcLength(A,P) -\tkzGetLength{rAP} -\tkzDefPointOnCircle[R= angle 190 center A radius \rAP] -\tkzGetPoint{M} -\tkzDefPointBy[inversion = center O through C](M) -\tkzGetPoint{M'} -\tkzDrawCircles[new](A,P A',P') -\tkzDrawCircle(O,C) -\tkzDrawLines[add=0 and .5](O,T' O,A' O,M' O,P') -\tkzDrawPoints(A,A',P,P',O,T,T',M,M') -\tkzLabelPoints(O,T,T',M,M') -\tkzLabelPoints[below](P,P') -\end{tikzpicture} -\end{tkzexample} For a more complex example see \tkzname{Pappus} \ref{pappus} @@ -477,7 +460,7 @@ options & & examples \\ The points are only defined and not drawn. \end{NewMacroBox} -\subsubsection{Example of translation} +\subsubsection{\tkzname{translation} of multiple points} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] \tkzDefPoints{0/0/A,3/0/B,3/1/A',1/2/C} @@ -493,7 +476,7 @@ The points are only defined and not drawn. \end{tikzpicture} \end{tkzexample} -\subsubsection{Example of symmetry: an oval} +\subsubsection{\tkzname{symmetry} of multiple points: an oval} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=0.4] 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 index 51c4415438c..2741872f8c0 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-points.tex @@ -48,7 +48,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzDefPoints{0/0/O,1/0/I,0/1/J} \tkzDefPoint(3,4){A} \tkzDrawPoints(O,A) - \tkzLabelPoint(A){$A_1 (x_1,y_1)$} + \tkzLabelPoint[above](A){$A_1 (x_1,y_1)$} \tkzShowPointCoord[xlabel=$x_1$, ylabel=$y_1$](A) \tkzLabelPoints(O,I) @@ -73,7 +73,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzFillAngle[opacity=.5](I,O,P) \tkzLabelAngle[pos=1.25](I,O,P){% $\alpha$} - \tkzLabelPoint(P){$P (\alpha : d )$} + \tkzLabelPoint[right](P){$P (\alpha : d )$} \tkzDrawPoints[shape=cross](I,J) \tkzLabelPoints(O,I) \tkzLabelPoints[left](J) @@ -89,7 +89,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzDefPoints{0/0/O,1/0/I,0/1/J} \tkzDefPoint(3,4){A} \tkzDrawPoints(O,A) - \tkzLabelPoint(A){$A_1 (x_1,y_1)$} + \tkzLabelPoint[above](A){$A_1 (x_1,y_1)$} \tkzShowPointCoord[xlabel=$x_1$,ylabel=$y_1$](A) \tkzLabelPoints(O,I) \tkzLabelPoints[left](J) @@ -109,7 +109,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzMarkAngle[mark=none,->](I,O,P) \tkzFillAngle[opacity=.5](I,O,P) \tkzLabelAngle[pos=1.25](I,O,P){$\alpha$} - \tkzLabelPoint(P){$P (\alpha : d )$} + \tkzLabelPoint[right](P){$P (\alpha : d )$} \tkzDrawPoints[shape=cross](I,J) \tkzLabelPoints(O,I) \tkzLabelPoints[left](J) @@ -129,7 +129,7 @@ arguments & default & definition \\ \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. Do not confuse the reference with the name of a point. The reference is used by calculations, but frequently, the name is identical to the reference. +\emph{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. Do not confuse the reference with the name of a point. The reference is used by calculations, but frequently, the name is identical to the reference.} \medskip \begin{tabular}{lll}% @@ -228,7 +228,7 @@ This macro allows you to place one point relative to another. This is equivalent \tkzDrawSegments(A,B B,C C,A) \tkzMarkSegments[mark=|](A,B A,C) \tkzDrawPoints(A,B,C) - \tkzLabelPoints(B,C) + \tkzLabelPoints[right](B,C) \tkzLabelPoints[above left](A) \end{tikzpicture} \end{tkzexample} @@ -243,7 +243,7 @@ Let's see how to get an equilateral triangle (there is much simpler) \tkzDefShiftPoint[A](-30:3){C} \tkzDrawPolygon(A,B,C) \tkzDrawPoints(A,B,C) - \tkzLabelPoints(B,C) + \tkzLabelPoints[right](B,C) \tkzLabelPoints[above left](A) \tkzMarkSegments[mark=|](A,B A,C B,C) \end{tikzpicture} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointsSpc.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointsSpc.tex index bb2d2d9215e..0aac3cc4990 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointsSpc.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointsSpc.tex @@ -120,7 +120,7 @@ Review the use of \tkzcname{tkzDefPoint}. \end{tikzpicture} \end{tkzexample} -\subsection{Golden ratio} +\subsection{\tkzname{Golden ratio} \tkzcname{tkzDefGoldenRatio}} From Wikipedia : In mathematics, two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Expressed algebraically, for quantities $a$, $b$ such as $a > b > 0$; $a+b$ is to $a$ as $a$ is to $b$. $ \frac{a+b}{a} = \frac{a}{b} = \phi = \frac{1 + \sqrt{5}}{2}$ @@ -154,8 +154,21 @@ $AB=a$, $BC=b$ and $\frac{AC}{AB} = \frac{AB}{BC} =\phi$ \end{tikzpicture} \end{tkzexample} +\subsubsection{Golden arbelos} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.6] +\tkzDefPoints{0/0/A,10/0/B} +\tkzDefGoldenRatio(A,B) \tkzGetPoint{C} +\tkzDefMidPoint(A,B) \tkzGetPoint{O_1} +\tkzDefMidPoint(A,C) \tkzGetPoint{O_2} +\tkzDefMidPoint(C,B) \tkzGetPoint{O_3} +\tkzDrawSemiCircles[fill=purple!15](O_1,B) +\tkzDrawSemiCircles[fill=teal!15](O_2,C O_3,B) +\end{tikzpicture} +\end{tkzexample} + It is also possible to use the following macro. -\subsection{Barycentric coordinates } +\subsection{\tkzname{Barycentric coordinates} with \tkzcname{tkzDefBarycentricPoint}} $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: @@ -174,11 +187,11 @@ arguments & default & definition \\ \end{tabular} \medskip -You need at least two points. Result in \tkzname{tkzPointResult}. +\emph{You need at least two points. Result in \tkzname{tkzPointResult}.} \end{NewMacroBox} -\subsubsection{Using \tkzcname{tkzDefBarycentricPoint} with two points} +\subsubsection{with two points} In the following example, we obtain the barycenter of points $A$ and $B$ with coefficients $1$ and $2$, in other words: \[ \overrightarrow{AI}= \frac{2}{3}\overrightarrow{AB} @@ -196,7 +209,7 @@ In the following example, we obtain the barycenter of points $A$ and $B$ with co \end{tikzpicture} \end{tkzexample} -\subsubsection{Using \tkzcname{tkzDefBarycentricPoint} with three points} +\subsubsection{with three points} This time $M$ is simply the center of gravity of the triangle. For reasons of simplification and homogeneity, there is also \tkzcname{tkzCentroid}. @@ -210,16 +223,17 @@ This time $M$ is simply the center of gravity of the triangle. \tkzDefMidPoint(C,B) \tkzGetPoint{A'} \tkzDrawPolygon(A,B,C) \tkzDrawLines[add=0 and 1,new](A,G B,G C,G) - \tkzLabelPoint(G){$G$} \tkzDrawPoints[new](A',B',C',G) \tkzDrawPoints(A,B,C) + \tkzLabelPoint[above right](G){$G$} \tkzAutoLabelPoints[center=G](A,B,C) - \tkzAutoLabelPoints[center=G,above right](A',B',C') + \tkzLabelPoints[above right](A') + \tkzLabelPoints[below](B',C') \end{tikzpicture} \end{tkzexample} -\subsection{Internal and external Similitude Center} +\subsection{\tkzname{Internal and external Similitude Center}} The centers of the two homotheties in which two circles correspond are called external and internal centers of similitude. You can use \tkzcname{tkzDefIntSimilitudeCenter} and \tkzcname{tkzDefExtSimilitudeCenter} but the next macro is better. \begin{NewMacroBox}{tkzDefSimilitudeCenter}{\oarg{options}\parg{O,A}\parg{O',B} or \parg{O,r}\parg{O',r'}}% @@ -249,21 +263,42 @@ options & default & definition \\ \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoints{0/0/O,4/-5/A,3/0/B,5/-5/C} -\tkzDefSimilitudeCenter[int](O,B)(A,C) \tkzGetPoint{I} - \tkzDefSimilitudeCenter[ext](O,B)(A,C) \tkzGetPoint{J} - \tkzDefTangent[from = I](O,B) \tkzGetPoints{D}{E} - \tkzDefTangent[from = I](A,C) \tkzGetPoints{D'}{E'} - \tkzDefTangent[from = J](O,B) \tkzGetPoints{F}{G} - \tkzDefTangent[from = J](A,C) +\tkzDefSimilitudeCenter[int](O,B)(A,C) \tkzGetPoint{I} + \tkzDefSimilitudeCenter[ext](O,B)(A,C) \tkzGetPoint{J} + \tkzDefLine[tangent from = I](O,B) \tkzGetPoints{D}{E} + \tkzDefLine[tangent from = I](A,C) \tkzGetPoints{D'}{E'} + \tkzDefLine[tangent from = J](O,B) \tkzGetPoints{F}{G} + \tkzDefLine[tangent from = J](A,C) \tkzGetPoints{F'}{G'} \tkzDrawCircles(O,B A,C) \tkzDrawSegments[add = .5 and .5,new](D,D' E,E') \tkzDrawSegments[add= 0 and 0.25,new](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} +\subsubsection{D'Alembert Theorem} % (fold) +\label{ssub:d_alembert_theorem} + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture}[scale=.6,rotate=90] + \tkzDefPoints{0/0/A,3/0/a,7/-1/B,5.5/-1/b} + \tkzDefPoints{5/-4/C,4.25/-4/c} + \tkzDrawCircles(A,a B,b C,c) + \tkzDefExtSimilitudeCenter(A,a)(B,b) \tkzGetPoint{I} + \tkzDefExtSimilitudeCenter(A,a)(C,c) \tkzGetPoint{J} + \tkzDefExtSimilitudeCenter(C,c)(B,b) \tkzGetPoint{K} + \tkzDefIntSimilitudeCenter(A,a)(B,b) \tkzGetPoint{I'} + \tkzDefIntSimilitudeCenter(A,a)(C,c) \tkzGetPoint{J'} + \tkzDefIntSimilitudeCenter(C,c)(B,b) \tkzGetPoint{K'} + \tkzDrawPoints(A,B,C,I,J,K,I',J',K') + \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K) + \tkzDrawSegments[new](I,J' I',J I',K) + \end{tikzpicture} +\end{tkzexample} + +% subsubsection d_alembert_theorem (end) + You can use \tkzcname{tkzDefBarycentricPoint} to find a homothetic center |\tkzDefBarycentricPoint(O=\r,A=\R) \tkzGetPoint{I}| \\ @@ -280,12 +315,11 @@ You can use \tkzcname{tkzDefBarycentricPoint} to find a homothetic center \tkzDrawCircles(A,B C,B) \tkzDrawSegments[add= 0 and 0.25,cyan](J,F J,G) \tkzDrawPoints(A,J,F,G,F',G') - \tkzLabelPoints[font=\scriptsize](A,J,F,G,F',G') \end{tikzpicture} \end{tkzexample} \newpage %<----------------------------------------------------------------------> -\subsection{ Harmonic division} +\subsection{ \tkzname{Harmonic division} with \tkzcname{tkzDefHarmonic}} %<----------------------------------------------------------------------> \begin{NewMacroBox}{tkzDefHarmonic}{\oarg{options}\parg{pt1,pt2,pt3} or \parg{pt1,pt2}}% @@ -311,6 +345,29 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} +\subsubsection{Bisector and harmonic division} % (fold) +\label{ssub:bisector_and_harmonic_division} + +\begin{tkzexample}[vbox,small] + \begin{tikzpicture}[scale=1.25] + \tkzDefPoints{0/0/A,4/0/C,5/3/X} + \tkzDefLine[bisector](A,X,C) \tkzGetPoint{x} + \tkzInterLL(X,x)(A,C) \tkzGetPoint{B} + \tkzDefHarmonic[ext](A,C,B) \tkzGetPoint{D} + \tkzDrawPolygon(A,X,C) + \tkzDrawSegments(X,B C,D D,X) + \tkzDrawPoints(A,B,C,D,X) + \tkzMarkAngles[mark=s|](A,X,B B,X,C) + \tkzMarkRightAngle[size=.4, + fill=gray!20, + opacity=.3](B,X,D) + \tkzLabelPoints(A,B,C,D) + \tkzLabelPoints[above right](X) + \end{tikzpicture} +\end{tkzexample} + + +% subsubsection bisector_and_harmonic_division (end) \subsubsection{option \tkzname{both} } \tkzname{both} is the default option \begin{tkzexample}[vbox,small] @@ -324,9 +381,9 @@ options & default & definition \\ \end{tkzexample} %<----------------------------------------------------------------------> -\subsection{ Equidistant points} +\subsection{\tkzname{Equidistant points} with \tkzcname{tkzDefEquiPoints} } %<----------------------------------------------------------------------> -\subsubsection{\tkzcname{tkzDefEquiPoints}} + \begin{NewMacroBox}{tkzDefEquiPoints}{\oarg{local options}\parg{pt1,pt2}}% \begin{tabular}{lll}% arguments & default & definition \\ @@ -342,9 +399,14 @@ options & default & definition \\ \TOline{show} {false} {if true displays compass traces} \TOline{/compass/delta} {0} {compass trace size } \end{tabular} + +\medskip +\emph{This macro makes it possible to obtain two points on a straight line equidistant from a given point.} \end{NewMacroBox} -This macro makes it possible to obtain two points on a straight line equidistant from a given point. + + + \subsubsection{Using \tkzcname{tkzDefEquiPoints} with options} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} @@ -360,10 +422,63 @@ This macro makes it possible to obtain two points on a straight line equidistant \tkzLabelPoints[color=blue](A,B,C) \end{tikzpicture} \end{tkzexample} +%<----------------------------------------------------------------------> +% Middle of an arc > +%<----------------------------------------------------------------------> +\subsection{Middle of an arc} +\begin{NewMacroBox}{tkzDefMidArc}{\parg{pt1,pt2,pt3}}% +\begin{tabular}{lll}% +arguments & default & definition \\ +\midrule +\TAline{$pt1,pt2,pt3$}{no default}{$pt1$ is the center, $\widearc{pt2pt3}$ the arc} +\end{tabular} +\end{NewMacroBox} +\begin{tkzexample}[vbox,small] + \begin{tikzpicture}[scale=1] + \tkzDefPoints{0/0/A,10/0/B} + \tkzDefGoldenRatio(A,B) \tkzGetPoint{C} + \tkzDefMidPoint(A,B) \tkzGetPoint{O_1} + \tkzDefMidPoint(A,C) \tkzGetPoint{O_2} + \tkzDefMidPoint(C,B) \tkzGetPoint{O_3} + \tkzDefMidArc(O_3,B,C) \tkzGetPoint{P} + \tkzDefMidArc(O_2,C,A) \tkzGetPoint{Q} + \tkzDefMidArc(O_1,B,A) \tkzGetPoint{L} + \tkzDefPointBy[rotation=center C angle 90](B) \tkzGetPoint{c} + \tkzInterCC[common=B](P,B)(O_1,B) \tkzGetFirstPoint{P_1} + \tkzInterCC[common=C](P,C)(O_2,C) \tkzGetFirstPoint{P_2} + \tkzInterCC[common=C](Q,C)(O_3,C) \tkzGetFirstPoint{P_3} + \tkzInterLC[near](c,C)(O_1,A) \tkzGetFirstPoint{D} + \tkzInterLL(A,P_1)(C,D) \tkzGetPoint{P_1'} + \tkzDefPointBy[inversion = center A through D](P_2) \tkzGetPoint{P_2'} + \tkzDefCircle[circum](P_3,P_2,P_1) \tkzGetPoint{O_4} + \tkzInterLL(B,Q)(A,P) \tkzGetPoint{S} + \tkzDefMidPoint(P_2',P_1') \tkzGetPoint{o} + \tkzDefPointBy[inversion = center A through D](S) \tkzGetPoint{S'} + \tkzDrawArc[cyan,delta=0](Q,A)(P_1) + \tkzDrawArc[cyan,delta=0](P,P_1)(B) + \tkzDrawSemiCircles[teal](O_1,B O_2,C O_3,B) + \tkzDrawCircles[new](o,P O_4,P_1) + \tkzDrawSegments(A,B) + \tkzDrawSegments[cyan](A,P_1 A,S' A,P_2') + \tkzDrawSegments[purple](B,L C,P_2' B,Q B,L S',P_1') + \tkzDrawLines[add=0 and .8](B,P_2') + \tkzDrawLines[add=0 and .4](C,D) + \tkzDrawPoints(A,B,C,P,Q,P_3,P_2,P_1,P_1',D,P_2',L,S,S') + \tkzLabelPoints(A,B,C,P_3) + \tkzLabelPoints[above](P,Q,P_1) + \tkzLabelPoints[above right](P_2,P_2',D,S') + \tkzLabelPoints[above left](L,S) + \tkzLabelPoints[below left](P_1') + \end{tikzpicture} +\end{tkzexample} + +%<----------------------------------------------------------------------> +% Point on a line > +%<----------------------------------------------------------------------> \section{Point on line or circle} -\subsection{Point on a line} +\subsection{Point on a line with \tkzcname{tkzDefPointOnLine}} \begin{NewMacroBox}{tkzDefPointOnLine}{\oarg{local options}\parg{A,B}}% \begin{tabular}{lll}% @@ -399,15 +514,22 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsection{Point on a circle} +\subsection{Point on a circle with \tkzcname{tkzDefPointOnCircle}} +The order of the arguments has changed: now it is center, angle and point or radius. +I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}. \begin{NewMacroBox}{tkzDefPointOnCircle}{\oarg{local options}}% \begin{tabular}{lll}% options & default & examples definition \\ \midrule -\TOline{through} {}{through = angle 30 center K1 point B]} -\TOline{R} {}{R = angle 30 center K1 radius \tkzcname{rAp}} +\TOline{through} {}{through = center K1 angle 30 point B]} +\TOline{R} {}{R = center K1 angle 30 radius \tkzcname{rAp}} +\TOline{through in rad} {}{through = center K1 angle pi/4 point B]} +\TOline{R} {}{R = center K1 angle pi/6 radius \tkzcname{rAp}} \end{tabular} + +\medskip +\emph{The new order for arguments are : center, angle and point or radius.} \end{NewMacroBox} \subsubsection{Altshiller's Theorem} @@ -416,11 +538,11 @@ options & default & examples definition \\ \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.4] \tkzDefPoints{0/0/P,5/0/Q,3/2/I} -\tkzDefCircleBy[orthogonal from=P](Q,I) +\tkzDefCircle[orthogonal from=P](Q,I) \tkzGetFirstPoint{E} \tkzDrawCircles(P,E Q,E) \tkzInterCC[common=E](P,E)(Q,E) \tkzGetFirstPoint{F} -\tkzDefPointOnCircle[through = angle 80 center P point E] +\tkzDefPointOnCircle[through = center P angle 80 point E] \tkzGetPoint{A} \tkzInterLC[common=E](A,E)(Q,E) \tkzGetFirstPoint{C} \tkzInterLL(A,F)(C,Q) \tkzGetPoint{D} @@ -434,16 +556,18 @@ options & default & examples definition \\ \end{tkzexample} \subsubsection{Use of \tkzcname{tkzDefPointOnCircle}} + \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/0/B,0.8/3/C} -\tkzDefPointOnCircle[R = angle 90 center B radius 1] +\tkzDefPointOnCircle[R = center B angle 90 radius 1] \tkzGetPoint{I} \tkzDefCircle[circum](A,B,C) -\tkzGetPoint{G} \tkzGetLength{rG} -\tkzDefPointOnCircle[R = angle 30 center G radius \rG] +\tkzGetPoints{G}{g} +\tkzDefPointOnCircle[through = center G angle 30 point g] \tkzGetPoint{J} -\tkzDrawCircle[R,teal](B,1) +\tkzDefCircle[R](B,1) \tkzGetPoint{b} +\tkzDrawCircle[teal](B,b) \tkzDrawCircle(G,J) \tkzDrawPoints(A,B,C,G,I,J) \tkzAutoLabelPoints[center=G](A,B,C,J) @@ -506,7 +630,8 @@ options & default & definition \\ \tkzDrawSegments[new](A,Ha B,Hb C,Hc) \tkzDrawPoints(A,B,C,H) \tkzLabelPoint(H){$H$} - \tkzAutoLabelPoints[center=H](A,B,C) + \tkzLabelPoints[below](A,B) + \tkzLabelPoints[above](C) \tkzMarkRightAngles(A,Ha,B B,Hb,C C,Hc,A) \end{tikzpicture} \end{tkzexample} @@ -551,7 +676,8 @@ The center of the incircle, called the incenter, can be found as the intersectio \tkzDefTriangleCenter[in](A,B,C) \tkzGetPoint{I} \tkzDrawLines(A,B B,C C,A) -\tkzDrawCircle[in](A,B,C) +\tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{i} +\tkzDrawCircle(I,i) \tkzDrawPoint[red](I) \tkzDrawPoints(A,B,C) \tkzLabelPoint(I){$I$} @@ -629,7 +755,6 @@ The point of concurrence $K$ of the symmedians, sometimes also called the Lemoin \tkzDrawLines[add = 0 and 2/3,new](A,K B,K C,K) \tkzDrawSegments[color=cyan](A,Ma B,Mb C,Mc) \tkzDrawSegments[color=green](A,Ia B,Ib C,Ic) - \tkzDrawLine[add=2 and 2](G,I) \tkzDrawPoints(A,B,C,K,G,I) \tkzLabelPoints[font=\scriptsize](A,B,K,G,I) \tkzLabelPoints[above,font=\scriptsize](C) @@ -650,11 +775,13 @@ The Spieker center is the center $Sp$ of the Spieker circle, i.e., the incenter \tkzGetPoint{Sp} \tkzDrawPolygon[](A,B,C) \tkzDrawPolygon[new](Ma,Mb,Mc) - \tkzDrawCircle[in](Ma,Mb,Mc) + \tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoints{I}{i} + \tkzDrawCircle(I,i) \tkzDrawPoints(B,C,A,Sp,Ma,Mb,Mc) - \tkzAutoLabelPoints[center=G,dist=.3](Ma,Mb,Mc) + \tkzAutoLabelPoints[center=G,dist=.3](Ma,Mb) \tkzLabelPoints[right](Sp) - \tkzAutoLabelPoints[center=G](A,B,C) + \tkzLabelPoints[below](A,B,Mc) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} @@ -669,12 +796,13 @@ The Gergonne Point is the point of concurrency which results from connecting the \tkzDefTriangleCenter[gergonne](A,B,C) \tkzGetPoint{Ge} \tkzDefSpcTriangle[intouch](A,B,C){C_1,C_2,C_3} -\tkzDrawCircle[in](A,B,C) +\tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{i} \tkzDrawLines[add=.25 and .25,teal](A,B A,C B,C) \tkzDrawSegments[new](A,C_1 B,C_2 C,C_3) \tkzDrawPoints(A,...,C,C_1,C_2,C_3) \tkzDrawPoints[red](Ge) -\tkzLabelPoints(A,...,C,C_1,C_2,C_3,Ge) +\tkzLabelPoints(B,C,C_1,Ge) +\tkzLabelPoints[above](A,C_2,C_3) \end{tikzpicture} \end{tkzexample} @@ -695,7 +823,7 @@ Let $Ta$ be the point at which the excircle with center $Ja$ meets the side $BC$ \tkzDrawPoints[new](Ja,Jb,Jc,Ta,Tb,Tc) \tkzClipBB \tkzDrawLines[add=1 and 1,dashed](A,B B,C C,A) - \tkzDrawCircles[ex,new](A,B,C C,A,B B,C,A) + \tkzDrawCircles[new](Ja,Ta Jb,Tb Jc,Tc) \tkzDrawSegments[new,dashed](Ja,Ta Jb,Tb Jc,Tc) \tkzDrawPoints(B,C,A) \tkzDrawPoints[new](Na) @@ -760,5 +888,4 @@ The Gergonne point $Ge$, triangle centroid $G$, and mittenpunkt $M$ are collinea \end{tikzpicture} \end{tkzexample} - \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointwith.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointwith.tex index 51abb0b7e13..200087f59ea 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointwith.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-pointwith.tex @@ -210,7 +210,8 @@ $K=2$ therefore $AC=2$. \tkzDefPointWith[orthogonal normed,K=2](A,B) \tkzGetPoint{C} \tkzDrawPoints[color=red](A,B,C) - \tkzDrawCircle[R](A,2) + \tkzDefCircle[R](A,2) \tkzGetPoint{a} + \tkzDrawCircle(A,a) \tkzDrawSegments[vect](A,B A,C) \tkzMarkRightAngle[fill=gray!20](B,A,C) \tkzLabelPoints[above=3pt](A,B,C) diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-polygons.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-polygons.tex index 24df108ab1a..95df8ef0601 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-polygons.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-polygons.tex @@ -43,7 +43,7 @@ Note the inversion of the first two points and the result. \tkzMarkRightAngles(A,B,C) \tkzDrawPoints(A,B) \tkzDrawPoint[new](C) \tkzLabelPoints(A,B) - \tkzLabelPoints[new](C) + \tkzLabelPoints[new,above](C) \end{tikzpicture} \end{tkzexample} @@ -61,7 +61,7 @@ Note the inversion of the first two points and the result. \tkzDrawPolygon(C,B,I,J) \tkzDrawPolygon(B,A,E,F) \tkzLabelSegment(A,C){$a$} -\tkzLabelSegment(C,B){$b$} +\tkzLabelSegment[right](C,B){$b$} \tkzLabelSegment[swap](A,B){$c$} \end{tikzpicture} \end{tkzexample} @@ -171,9 +171,10 @@ Without the previous macro here is how to get the golden rectangle. \tkzDefPointBy[projection=onto D--C ](E) \tkzGetPoint{H} \tkzDrawArc[style=dashed](I,E)(D) -\tkzDrawSquare(A,B) +\tkzDrawPolygon(A,B,C,D) \tkzDrawPoints(C,D,E,F,H) -\tkzLabelPoints(A,B,C,D,E,F,H) +\tkzLabelPoints(A,B,C,D,E,F,H) +\tkzLabelPoints[above](C,D,F,H) \tkzDrawSegments[style=dashed,color=gray]% (E,F C,F B,E F,H H,C E,H) \end{tikzpicture} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex index e4530e276a5..82241a6392d 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex @@ -55,23 +55,23 @@ The fourth tutorial of the \emph{PgfManual} is about geometric constructions. \e \medskip -\hspace*{1cm}\vbox{\orange |\usepackage{tikz}|\\ +\hspace*{1cm}\vbox{\color{orange} |\usepackage{tikz}|\\ |\usetikzlibrary{calc,intersections,through,backgrounds}|} \medskip -\hspace*{1cm}\vbox{\red |\usepackage{tkz-euclide}|} +\hspace*{1cm}\vbox{\color{red} |\usepackage{tkz-euclide}|} \medskip How to get the line AB ? To get this line, we use two fixed points.\\ \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\coordinate [label=left:$A$] (A) at (0,0);|\\ |\coordinate [label=right:$B$] (B) at (1.25,0.25);|\\ |\draw (A) -- (B);|} \medskip -\hspace*{1cm}\vbox{\red +\hspace*{1cm}\vbox{\color{red} |\tkzDefPoint(0,0){A}|\\ |\tkzDefPoint(1.25,0.25){B}|\\ |\tkzDrawSegment(A,B)|\\ @@ -81,14 +81,14 @@ How to get the line AB ? To get this line, we use two fixed points.\\ We want to draw a circle around the points $A$ and $B$ whose radius is given by the length of the line AB. \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\draw let \p1 = ($ (B) - (A) $),|\\ |\n2 = {veclen(\x1,\y1)} in|\\ | (A) circle (\n2)|\\ | (B) circle (\n2);|} \medskip -\hspace*{1cm}\vbox{\red +\hspace*{1cm}\vbox{\color{red} |\tkzDrawCircles(A,B B,A)| } @@ -96,7 +96,7 @@ The intersection of the circles $\mathcal{D}$ and $\mathcal{E}$ \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |draw [name path=A--B] (A) -- (B);|\\ |node (D) [name path=D,draw,circle through=(B),label=left:$D$] at (A) {}; |\\ |node (E) [name path=E,draw,circle through=(A),label=right:$E$] at (B) {};|\\ @@ -106,17 +106,17 @@ The intersection of the circles $\mathcal{D}$ and $\mathcal{E}$ |node [fill=red,inner sep=1pt,label=-45:$F$] at (F) {};|\\} \medskip -\hspace*{1cm}\vbox{\red |\tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{X}|\\} +\hspace*{1cm}\vbox{\color{red} |\tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{X}|\\} How to draw points : \medskip -\hspace*{1cm}\vbox{\orange |\foreach \point in {A,B,C}|\\ +\hspace*{1cm}\vbox{\color{orange} |\foreach \point in {A,B,C}|\\ |\fill [black,opacity=.5] (\point) circle (2pt);|\\} \medskip -\hspace*{1cm}\vbox{\red| \tkzDrawPoints[fill=gray,opacity=.5](A,B,C)|\\} +\hspace*{1cm}\vbox{\color{red}| \tkzDrawPoints[fill=gray,opacity=.5](A,B,C)|\\} \subsubsection{Complete code with \pkg{tkz-euclide}} @@ -126,7 +126,6 @@ We need to define colors |\colorlet{output}{red!70!black}|\\ |\colorlet{triangle}{orange!40} | - \begin{tkzexample}[vbox,small] \colorlet{input}{red!80!black} \colorlet{output}{red!70!black} @@ -140,17 +139,17 @@ We need to define colors \tkzDrawSegment[input](A,B) \tkzDrawSegments[red](A,C B,C) \tkzDrawCircles[help lines](A,B B,A) - + \tkzDrawPoints[fill=gray,opacity=.5](A,B,C) + \tkzLabelPoints(A,B) - \tkzLabelCircle[below=12pt](A,B)(180){$D$} - \tkzLabelCircle[above=12pt](B,A)(180){$E$} + \tkzLabelCircle[below=12pt](A,B)(180){$\mathcal{D}$} + \tkzLabelCircle[above=12pt](B,A)(180){$\mathcal{E}$} \tkzLabelPoint[above,red](C){$C$} - \tkzDrawPoints[fill=gray,opacity=.5](A,B,C) - + \end{tikzpicture} \end{tkzexample} -\subsubsection*{Book I, Proposition II \_Euclid's Elements\_} +\subsubsection{Book I, Proposition II \_Euclid's Elements\_} \begin{tikzpicture} \node [mybox,title={Book I, Proposition II \_Euclid's Elements\_}] (box){% @@ -165,7 +164,7 @@ Explanation In the first part, we need to find the midpoint of the straight line $AB$. With \TIKZ\ we can use the calc library \medskip -\hspace*{1cm}\vbox{\orange |\coordinate [label=left:$A$] (A) at (0,0);|\\ +\hspace*{1cm}\vbox{\color{orange} |\coordinate [label=left:$A$] (A) at (0,0);|\\ |\coordinate [label=right:$B$] (B) at (1.25,0.25);|\\ |\draw (A) -- (B);|\\ |\node [fill=red,inner sep=1pt,label=below:$X$] (X) at ($ (A)!.5!(B) $) {};|\\} @@ -181,7 +180,7 @@ With \pkg{tkz-euclide} we have a macro \tkzcname{tkzDefMidPoint}, we get the poi Then we need to construct a triangle equilateral. It's easy with \pkg{tkz-euclide} . With TikZ you need some effort because you need to use the midpoint $X$ to get the point $D$ with trigonometry calculation. \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\node [fill=red,inner sep=1pt,label=below:$X$] (X) at ($ (A)!.5!(B) $) {}; | \\ |\node [fill=red,inner sep=1pt,label=above:$D$] (D) at | \\ |($ (X) ! {sin(60)*2} ! 90:(B) $) {}; | \\ @@ -189,25 +188,25 @@ Then we need to construct a triangle equilateral. It's easy with \pkg{tkz-euclid } \\ \medskip -\hspace*{1cm}\vbox{\red |\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D}|}\\ +\hspace*{1cm}\vbox{\color{red} |\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D}|}\\ We can draw the triangle at the end of the picture with \medskip -\hspace*{1cm}\vbox{\red |\tkzDrawPolygon{A,B,C}|} +\hspace*{1cm}\vbox{\color{red} |\tkzDrawPolygon{A,B,C}|} \medskip We know how to draw the circle $\mathcal{H}$ around $B$ through $C$ and how to place the points $E$ and $F$ \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\node (H) [label=135:$H$,draw,circle through=(C)] at (B) {};| \\ |\draw (D) -- ($ (D) ! 3.5 ! (B) $) coordinate [label=below:$F$] (F);| \\ |\draw (D) -- ($ (D) ! 2.5 ! (A) $) coordinate [label=below:$E$] (E);|} \\ \medskip -\hspace*{1cm}\vbox{\red |\tkzDrawCircle(B,C)|\\ +\hspace*{1cm}\vbox{\color{red} |\tkzDrawCircle(B,C)|\\ |\tkzDrawLines[add=0 and 2](D,A D,B)|} \medskip @@ -217,7 +216,7 @@ Intersecting a Line and a Circle : here we search the intersection of the circle The infinite straight line $DB$ intercepts the circle but with \TIKZ\ we need to extend the lines $DB$ and that can be done using partway calculations. We get the point $F$ and $BF$ or $DF$ intercepts the circle \medskip -\hspace*{1cm}\vbox{\orange| \node (H) [label=135:$H$,draw,circle through=(C)] at (B) {}; | \\ +\hspace*{1cm}\vbox{\color{orange}| \node (H) [label=135:$H$,draw,circle through=(C)] at (B) {}; | \\ |\path let \p1 = ($ (B) - (C) $) in| \\ | coordinate [label=left:$G$] (G) at ($ (B) ! veclen(\x1,\y1) ! (F) $); | \\ |\fill[red,opacity=.5] (G) circle (2pt);|} \\ @@ -226,23 +225,23 @@ The infinite straight line $DB$ intercepts the circle but with \TIKZ\ we need to Like the intersection of two circles, it's easy to find the intersection of a line and a circle with \pkg{tkz-euclide}. We don't need $F$ \medskip -\hspace*{1cm}\vbox{\red | \tkzInterLC(B,D)(B,C)\tkzGetFirstPoint{G}|} +\hspace*{1cm}\vbox{\color{red} | \tkzInterLC(B,D)(B,C)\tkzGetFirstPoint{G}|} \medskip There are no more difficulties. Here the final code with some simplications. We draw the circle $\mathcal{K}$ with center $D$ and passing through $G$. It intersects the line $AD$ at point $L$. $AL = BC$. -\hspace*{1cm}\vbox{\red | \tkzDrawCircle(D,G)|} -\hspace*{1cm}\vbox{\red | \tkzInterLC(D,A)(D,G)\tkzGetSecondPoint{L}|} +\hspace*{1cm}\vbox{\color{red} | \tkzDrawCircle(D,G)|} +\hspace*{1cm}\vbox{\color{red} | \tkzInterLC(D,A)(D,G)\tkzGetSecondPoint{L}|} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1.5] \tkzDefPoint(0,0){A} \tkzDefPoint(0.75,0.25){B} \tkzDefPoint(1,1.5){C} -\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D} -\tkzInterLC(B,D)(B,C)\tkzGetFirstPoint{G} -\tkzInterLC(D,A)(D,G)\tkzGetSecondPoint{L} +\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D} +\tkzInterLC[near](D,B)(B,C) \tkzGetSecondPoint{G} +\tkzInterLC[near](D,A)(D,G) \tkzGetFirstPoint{L} \tkzDrawCircles(B,C D,G) \tkzDrawLines[add=0 and 2](D,A D,B) \tkzDrawSegment(A,B) @@ -251,12 +250,12 @@ We draw the circle $\mathcal{K}$ with center $D$ and passing through $G$. It int \tkzDrawPoints[fill=gray](A,B,C) \tkzLabelPoints[left,red](A) \tkzLabelPoints[below right,red](L) -\tkzLabelCircle[above=12pt](B,G)(90){$\mathcal{H}$} +\tkzLabelCircle[above](B,C)(20){$\mathcal{(H)}$} \tkzLabelPoints[above left](D) -\tkzLabelPoints[below](G) +\tkzLabelPoints[above](G) \tkzLabelPoints[above,red](C) \tkzLabelPoints[right,red](B) -\tkzLabelCircle[above=12pt](D,G)(90){$\mathcal{K}$} +\tkzLabelCircle[below](D,G)(-90){$\mathcal{(K)}$} \end{tikzpicture} \end{tkzexample} @@ -396,11 +395,11 @@ Let's analyze the figure \[\widehat{BCA}=90^\circ -\alpha/2 \] \item Finally \[\widehat{CBD}=\alpha=36^\circ \] - the triangle $CBD$ is a "gold" triangle. + the triangle $CBD$ is a "golden" triangle. \end{enumerate} \vspace*{24pt} -How construct a gold triangle or an angle of $36^\circ$? +How construct a golden triangle or an angle of $36^\circ$? \begin{enumerate} \item We place the fixed points $C$ and $D$. |\tkzDefPoint(0,0){C}| and |\tkzDefPoint(4,0){D}|; @@ -411,9 +410,8 @@ How construct a gold triangle or an angle of $36^\circ$? \item Now the two arcs with center $C$ and $D$ and radius $Cn$ define the point $B$. \end{enumerate} - -\begin{minipage}{.4\textwidth} - \begin{tikzpicture} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} \tkzDefPoint(0,0){C} \tkzDefPoint(4,0){D} \tkzDefSquare(C,D) @@ -433,64 +431,16 @@ How construct a gold triangle or an angle of $36^\circ$? \endpgfinterruptboundingbox \tkzDrawPolygon(B,...,D) \tkzDrawPoints(B,C,D,e,f,m,n) - \tkzLabelPoints(B,C,D,e,f,m,n) - \end{tikzpicture} -\end{minipage} -\begin{minipage}{.6\textwidth} - \begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoint(0,0){C} - \tkzDefPoint(4,0){D} - \tkzDefSquare(C,D) - \tkzGetPoints{e}{f} - \tkzDefMidPoint(C,f) - \tkzGetPoint{m} - \tkzInterLC(C,f)(m,e) - \tkzGetSecondPoint{n} - \tkzInterCC[with nodes](C,C,n)(D,C,n) - \tkzGetFirstPoint{B} - \tkzDrawSegment[brown,dashed](f,n) - \tkzDrawPolygon[brown,dashed](C,D,e,f) - \tkzDrawArc[brown,dashed](m,e)(n) - \tkzCompass[brown,dashed,delta=20](C,B) - \tkzCompass[brown,dashed,delta=20](D,B) - \tkzDrawPoints(C,D,B) - \tkzDrawPolygon(B,...,D) - \end{tikzpicture} - \end{tkzexample} -\end{minipage} + \tkzLabelPoints[above](B) + \tkzLabelPoints[left](f,m,n) + \tkzLabelPoints(C,D) + \tkzLabelPoints[right](e) +\end{tikzpicture} +\end{tkzexample} After building the golden triangle $BCD$, we build the point $A$ by noticing that $BD=DA$. Then we get the point $E$ and finally the point $F$. This is done with already intersections of defined objects (line and circle). -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoint(0,0){C} - \tkzDefPoint(4,0){D} - \tkzDefSquare(C,D) - \tkzGetPoints{e}{f} - \tkzDefMidPoint(C,f) - \tkzGetPoint{m} - \tkzInterLC(C,f)(m,e) - \tkzGetSecondPoint{n} - \tkzInterCC[with nodes](C,C,n)(D,C,n) - \tkzGetFirstPoint{B} - \tkzInterLC(C,D)(D,B) \tkzGetSecondPoint{A} - \tkzInterLC(B,A)(B,D) \tkzGetSecondPoint{E} - \tkzInterLL(B,D)(C,E) \tkzGetPoint{F} - \tkzDrawPoints(C,D,B) - \tkzDrawPolygon(B,...,D) - \tkzDrawPolygon(B,C,D) - \tkzDrawSegments(D,A A,B C,E) - \tkzDrawArc[delta=10](B,C)(E) - \tkzDrawPoints(A,...,F) - \tkzMarkRightAngle(B,F,C) - \tkzMarkAngles(C,B,D E,A,D) - \tkzLabelAngles[pos=1.5](C,B,D E,A,D){$\alpha$} - \tkzLabelPoints[below](A,C,D,E) - \tkzLabelPoints[above right](B,F) - \end{tikzpicture} -\end{tkzexample} \subsubsection{Part II: two others methods with golden and euclid triangle} @@ -502,9 +452,9 @@ After building the golden triangle $BCD$, we build the point $A$ by noticing tha \begin{tikzpicture} \tkzDefPoint(0,0){C} \tkzDefPoint(4,0){D} - \tkzDefTriangle[euclid](C,D) + \tkzDefTriangle[golden](C,D) \tkzGetPoint{B} - \tkzDefTriangle[euclid](B,C) + \tkzDefTriangle[golden](B,C) \tkzGetPoint{A} \tkzInterLC(B,A)(B,D) \tkzGetSecondPoint{E} \tkzInterLL(B,D)(C,E) \tkzGetPoint{F} @@ -565,7 +515,7 @@ $IB=a$, $AI=1$ \vspace{12pt} \hypertarget{firstex}{} - +\begin{tkzexample}[vbox,small] \begin{tikzpicture}[scale=1,ra/.style={fill=gray!20}] % fixed points \tkzDefPoint(0,0){A} @@ -588,6 +538,7 @@ $IB=a$, $AI=1$ \tkzLabelPoint[right](B){$B(10,0)$} \tkzLabelSegment[right=4pt](I,C){$\sqrt{a^2}=a \ (a>0)$} \end{tikzpicture} +\end{tkzexample} \emph{Comments} @@ -654,34 +605,6 @@ The following code consists of several parts: \tkzLabelSegment[right=4pt](I,C){$\sqrt{a^2}=a \ (a>0)$} \end{tkzltxexample} - -\item The full code: - - -\begin{tkzexample}[code only] - \begin{tikzpicture}[scale=1,ra/.style={fill=gray!20}] - % fixed points - \tkzDefPoint(0,0){A} - \tkzDefPoint(1,0){I} - % calculation - \tkzDefPointBy[homothety=center A ratio 10 ](I) \tkzGetPoint{B} - \tkzDefMidPoint(A,B) \tkzGetPoint{M} - \tkzDefPointWith[orthogonal](I,M) \tkzGetPoint{H} - \tkzInterLC(I,H)(M,B) \tkzGetSecondPoint{C} - \tkzDrawSegment[style=orange](I,C) - \tkzDrawArc(M,B)(A) - \tkzDrawSegment[dim={$1$,-16pt,}](A,I) - \tkzDrawSegment[dim={$a/2$,-10pt,}](I,M) - \tkzDrawSegment[dim={$a/2$,-16pt,}](M,B) - \tkzMarkRightAngle[ra](A,I,C) - \tkzDrawPoints(I,A,B,C,M) - \tkzLabelPoint[left](A){$A(0,0)$} - \tkzLabelPoints[above right](I,M) - \tkzLabelPoints[above left](C) - \tkzLabelPoint[right](B){$B(10,0)$} - \tkzLabelSegment[right=4pt](I,C){$\sqrt{a^2}=a \ (a>0)$} - \end{tikzpicture} -\end{tkzexample} \end{itemize} \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rapporteur.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rapporteur.tex index 5ee7fd055c4..3a6588673f3 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rapporteur.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rapporteur.tex @@ -1,7 +1,10 @@ \section{Protractor} Based on an idea by Yves Combe, the following macro allows you to draw a protractor. The operating principle is even simpler. Just name a half-line (a ray). The protractor will be placed on the origin $O$, the direction of the half-line is given by $A$. The angle is measured in the direct direction of the trigonometric circle. +\subsection{The macro \tkzcname{tkzProtractor}} % (fold) +\label{sub:the_macro_tkzcname_tkzprotractor} +% subsection the_macro_tkzcname_tkzprotractor (end) \begin{NewMacroBox}{tkzProtractor}{\oarg{local options}\parg{$O,A$}}% \begin{tabular}{lll}% options & default & definition \\ @@ -12,7 +15,7 @@ options & default & definition \\ \end{tabular} \end{NewMacroBox} -\subsection{The circular protractor} +\subsubsection{The circular protractor} Measuring in the forward direction \begin{tkzexample}[latex=7cm,small] @@ -27,7 +30,7 @@ Measuring in the forward direction \end{tikzpicture} \end{tkzexample} -\subsection{The circular protractor, transparent and returned} +\subsubsection{The circular protractor, transparent and returned} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.5] diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rnd.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rnd.tex index ac1efde3ea4..b902626e220 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rnd.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-rnd.tex @@ -39,7 +39,8 @@ options & default & definition \\ \tkzDefRectangle(A,C)\tkzGetPoints{B}{D} \tkzDrawPolygon[red](A,...,D) \tkzDrawPoints(A,...,E) - \tkzLabelPoints(A,...,E) + \tkzLabelPoints(A,B) + \tkzDrawPoints[above](C,D,E) \end{tikzpicture} \end{tkzexample} @@ -66,11 +67,11 @@ options & default & definition \\ \tkzGetPoint{D} \tkzDefRandPointOn[disk through=center A through B] \tkzGetPoint{E} -\tkzDrawCircle[R](A,\rAB) +\tkzDrawCircle(A,B) \tkzDrawPoints(A,B) \tkzLabelPoints(A,B) \tkzDrawPoints[red](C,D,E) -\tkzLabelPoints[red](C,D,E) +\tkzLabelPoints[red,right](C,D,E) \end{tikzpicture} \end{tkzexample} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-show.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-show.tex index 01bcc1bce7f..e1f84630c88 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-show.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-show.tex @@ -23,6 +23,7 @@ options & default & definition \\ \bottomrule \end{tabular} +\medskip You have to add, of course, all the styles of \TIKZ\ for tracings\dots \end{NewMacroBox} @@ -63,7 +64,7 @@ You have to add, of course, all the styles of \TIKZ\ for tracings\dots \tkzGetPoint{H} \tkzShowLine[bisector,size=2,gap=3,blue](B,A,C) \tkzShowLine[bisector,size=2,gap=3,blue](C,B,A) - \tkzDrawCircle[radius,color=blue,% + \tkzDrawCircle[color=blue,% line width=.2pt](I,H) \tkzDrawSegments[color=red!50](I,tkzPointResult) \tkzDrawLines[add=0 and -0.3,color=red!50](A,a B,b) @@ -107,7 +108,6 @@ options & default & definition \\ \subsubsection{Example of the use of \tkzcname{tkzShowTransformation}} - \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.6] \tkzDefPoint(0,0){O} \tkzDefPoint(2,-2){A} @@ -148,15 +148,16 @@ You'll find this figure again, but without the construction features. \tkzDefPointBy[projection=onto A--B](I) \tkzGetPoint{J} \tkzInterLC(I,A)(O,A) \tkzGetPoints{M}{M'} - \tkzInterLC(I,B)(O,A) \tkzGetPoints{N}{N'} - \tkzDrawSemiCircle[diameter](A,B) + \tkzInterLC(I,B)(O,A) \tkzGetPoints{N}{N'} + \tkzDefMidPoint(A,B) \tkzGetPoint{M} + \tkzDrawSemiCircle(M,B) \tkzDrawSegments(I,A I,B A,B B,M A,N) \tkzMarkRightAngles(A,M,B A,N,B) \tkzDrawSegment[style=dashed,color=blue](I,J) \tkzShowTransformation[projection=onto A--B, color=red,size=3,gap=-3](I) \tkzDrawPoints[color=red](M,N) - \tkzDrawPoints[color=blue](O,A,B,I) + \tkzDrawPoints[color=blue](O,A,B,I,M) \tkzLabelPoints(O) \tkzLabelPoints[above right](N,I) \tkzLabelPoints[below left](M,A) diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-styles.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-styles.tex index c7afa131bf2..b81098e5ab1 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-styles.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-styles.tex @@ -32,7 +32,7 @@ This is how the points are defined : It is of course possible to use \tkzcname{tikzset} but you can use a macro provided by the package. You can use the macro \tkzcname{tkzSetUpPoint} globally or locally, \\ Let's look at this possibility. -\subsubsection{Use of \tkzcname{tkzSetUpPoint}} +\subsection{Use of \tkzcname{tkzSetUpPoint}} \begin{NewMacroBox}{tkzSetUpPoint}{\oarg{local options}}% \begin{tabular}{lll}% @@ -51,6 +51,8 @@ options & default & definition \\ First of all here is a figure created with the styles of my documentation, then the style of the points is modified within the environment \tkzNameEnv{tikzspicture}. You can use the macro \tkzcname{tkzSetUpPoint} globally or locally, If you place this macro in your preamble or before your first figure then the point style will be valid for all figures in your document. It will be possible to use another style locally by using this command within an environment \tkzNameEnv{tikzpicture}.\\ Let's look at this possibility. + + \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,5/0/B,3/2/C,3/1/D} @@ -61,6 +63,7 @@ You can use the macro \tkzcname{tkzSetUpPoint} globally or locally, If you place \end{tikzpicture} \end{tkzexample} +\subsubsection{Local style} The style of the points is modified locally in the second figure \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} @@ -74,6 +77,7 @@ The style of the points is modified locally in the second figure \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{Style} and \tkzname{scope}} The points get back the initial style. Point D has a new style limited by the environment \tkzNameEnv{scope}. It is also possible to use |{...}| orThe points get back the initial style. Point $D$ has a new style limited by the environment \tkzNameEnv{scope}. It is also possible to use |{...}| or |\begingoup ... \endgroup|. \begin{tkzexample}[latex=7cm,small] @@ -120,7 +124,27 @@ The points get back the initial style. Point D has a new style limited by the en \section{Lines style} -\subsubsection{Use of \tkzcname{tkzSetUpLine}} \label{tkzsetupline} +You have several possibilities to change the style of a line. You can modify the style of a line with \tkzcname{tkzSetUpLine} or directly modify the style of the lines with |\tikzset{line style/.style = ... }| + +Reminder about \tkzname{line width} : There are a number of predefined styles that provide more “natural” ways of setting the line width. You can also redefine these styles. + + +\medskip +\begin{tabular}{cc} +predefined style & value of \tkzname{line width} \cr +\midrule +ultra thin & 0.1 pt \cr +very thin & 0.2 pt \cr +thin & 0.4 pt \cr +semithick & 0.6 pt \cr +thick & 0.8 pt \cr +very thick & 1.2 pt \cr +ultra thick & 1.6 pt \cr +\midrule +\end{tabular} + + +\subsection{Use of \tkzcname{tkzSetUpLine}} \label{tkzsetupline} It is a macro that allows you to define the style of all the lines. \begin{NewMacroBox}{tkzSetUpLine}{\oarg{local options}}% @@ -177,7 +201,9 @@ options & default & definition \\ \tkzDrawLine(A',B') \tkzCompass(A',B') \tkzDrawSegments(A,B C,D E,F) -\tkzDrawCircles[R](A',{\rCD} B',\rEF) +\tkzDefCircle[R](A',\rCD) \tkzGetPoint{a'} +\tkzDefCircle[R](B',\rEF)\tkzGetPoint{b'} +\tkzDrawCircles(A',a' B',b') \begin{scope} \tkzSetUpLine[color=red] \tkzDrawSegments(A',I B',I) @@ -201,6 +227,7 @@ options & default & definition \\ \section{Arc style} +\subsection{The macro \tkzcname{tkzSetUpArc}} \begin{NewMacroBox}{tkzSetUpArc}{\oarg{local options}}% \begin{tabular}{lll}% options & default & definition \\ @@ -211,33 +238,36 @@ options & default & definition \\ \end{tabular} \end{NewMacroBox} +\subsubsection{Use of \tkzcname{tkzSetUpArc}} \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture} - \def\r{3} \def\angle{200} - \tkzSetUpArc[delta=5,color=purple,style=dashed] - \tkzSetUpLabel[font=\scriptsize,red] - \tkzDefPoint(0,0){O} - \tkzDefPoint(\angle:\r){A} - \tkzInterCC(O,A)(A,O) \tkzGetPoints{C'}{C} - \tkzInterCC(O,A)(C,O) \tkzGetPoints{D'}{D} - \tkzInterCC(O,A)(D,O) \tkzGetPoints{X'}{X} - \tkzDrawCircle(O,A) - \tkzDrawArc(A,C')(C) - \tkzDrawArc(C,O)(D) - \tkzDrawArc(D,O)(X) - \tkzDrawLine[add=.1 and .1](A,X) - \tkzDrawPoints(O,A) - \tkzDrawPoints[new](C,C',D,X) - \tkzLabelPoints[below left](O,A) - \tkzLabelPoints[below](C,C') - \tkzLabelPoints[below right](X) - \tkzLabelPoints[above](D) - \end{tikzpicture} +\begin{tikzpicture} +\def\r{3} \def\angle{200} +\tkzSetUpArc[delta=10,color=purple,line width=.2pt] +\tkzSetUpLabel[font=\scriptsize,red] +\tkzDefPoint(0,0){O} +\tkzDefPoint(\angle:\r){A} +\tkzInterCC(O,A)(A,O) \tkzGetPoints{C'}{C} +\tkzInterCC(O,A)(C,O) \tkzGetPoints{D'}{D} +\tkzInterCC(O,A)(D,O) \tkzGetPoints{X'}{X} +\tkzDrawCircle(O,A) +\tkzDrawArc(A,C')(C) +\tkzDrawArc(C,O)(D) +\tkzDrawArc(D,O)(X) +\tkzDrawLine[add=.1 and .1](A,X) +\tkzDrawPoints(O,A) +\tkzSetUpPoint[size=3,color=purple,fill=purple!10] +\tkzDrawPoints(C,C',D,X) +\tkzLabelPoints[below left](O,A) +\tkzLabelPoints[below](C') +\tkzLabelPoints[below right](X) +\tkzLabelPoints[above](C,D) +\end{tikzpicture} \end{tkzexample} \section{Compass style, configuration macro \tkzcname{tkzSetUpCompass}} The following macro will help to understand the construction of a figure by showing the compass traces necessary to obtain certain points. +\subsection{The macro \tkzcname{tkzSetUpCompass} } \begin{NewMacroBox}{tkzSetUpCompass}{\oarg{local options}}% \begin{tabular}{lll}% options & default & definition \\ @@ -279,7 +309,7 @@ options & default & definition \\ \tkzInterLL(A,a)(B,b) \tkzGetPoint{I} \tkzDefPointBy[projection= onto A--B](I) \tkzGetPoint{H} -\tkzDrawCircle[radius,new](I,H) +\tkzDrawCircle[new](I,H) \tkzDrawSegments[new](I,H) \tkzDrawLines[add=0 and .2,new](A,I B,I) \end{tikzpicture} @@ -290,24 +320,27 @@ options & default & definition \\ \section{Label style} + +\subsection{The macro \tkzcname{tkzSetUpLabel} } The macro \tkzcname{tkzSetUpLabel} is used to define the style of the point labels. \begin{NewMacroBox}{tkzSetUpStyle}{\oarg{local options}}% The options are the same as those of \TIKZ \end{NewMacroBox} +\subsubsection{Use of \tkzcname{tkzSetUpLabel}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.75] \tkzSetUpLabel[font=\scriptsize,red] - \tkzSetUpStyle[line width=1pt,teal,<->]{XY} + \tkzSetUpStyle[line width=1pt,teal]{XY} \tkzInit[xmin=-3,xmax=3,ymin=-3,ymax=3] - \tkzDrawX[XY] - \tkzDrawY[XY] + \tkzDrawX[noticks,XY] + \tkzDrawY[noticks,XY] \tkzDefPoints{1/0/A,0/1/B,-1/0/C,0/-1/D} \tkzDrawPoints[teal,fill=teal!30,size=6](A,...,D) - \tkzLabelPoint[above right](A){$(1,0)$} - \tkzLabelPoint[above right](B){$(0,1)$} - \tkzLabelPoint[above left](C){$(-1,0)$} - \tkzLabelPoint[below left](D){$(0,-1)$} + \tkzLabelPoint[above right](A){$A(1,0)$} + \tkzLabelPoint[above right](B){$B(0,1)$} + \tkzLabelPoint[above left](C){$C(-1,0)$} + \tkzLabelPoint[below left](D){$D(0,-1)$} \end{tikzpicture} \end{tkzexample} @@ -315,10 +348,12 @@ The macro \tkzcname{tkzSetUpLabel} is used to define the style of the point labe \section{Own style} You can set your own style with \tkzcname{tkzSetUpStyle} +\subsection{The macro \tkzcname{tkzSetUpStyle} } \begin{NewMacroBox}{tkzSetUpStyle}{\oarg{local options}}% The options are the same as those of \TIKZ \end{NewMacroBox} +\subsubsection{Use of \tkzcname{tkzSetUpStyle}} \begin{tkzexample}[latex=2cm,small] \begin{tikzpicture} \tkzSetUpStyle[color=blue!20!black,fill=blue!20]{mystyle} @@ -485,7 +520,6 @@ Some users of my package have asked me to be able to place an arrow on each side You can change this style. With \tkzname{tkz arrows} you can an arrow on each segment of a polygon \subsubsection{Arrow on each segment with \tkzname{tkz arrows} } - \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,3/0/B} diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex index dbc6ea7d207..f91ec9445a3 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex @@ -1,4 +1,4 @@ -\section{Miscellaneous tools} +\section{Miscellaneous tools and mathematical tools} \subsection{Duplicate a segment} This involves constructing a segment on a given half-line of the same length as a given segment. @@ -17,9 +17,11 @@ arguments & example & explanation \\ \end{tabular} \medskip -The macro \tkzcname{tkzDuplicateLength} is identical to this one. +\emph{The macro \tkzcname{tkzDuplicateLength} is identical to this one. } \end{NewMacroBox} +\subsubsection{Use of\tkzcname{tkzDuplicateSegment}} + \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/A,2/-3/B,2/5/C} @@ -48,7 +50,7 @@ The macro \tkzcname{tkzDuplicateLength} is identical to this one. \tkzDrawLines(A,B B,C A,D) \tkzDrawArc[orange,delta=10](B,D)(I) \tkzDrawPoints(A,B,D,C,M,I) - \tkzLabelPoints(A,B,D,C,M,I) + \tkzLabelPoints[below left](A,B,D,C,M,I) \end{tikzpicture} \end{tkzexample} @@ -73,7 +75,7 @@ The macro \tkzcname{tkzDuplicateLength} is identical to this one. \tkzCompass(B,F) \tkzDrawPolygon[new](A,B,F) \tkzDrawPoints(A,...,H) - \tkzLabelPoints(A,...,H) + \tkzLabelPoints[below left](A,...,H) \end{tikzpicture} \end{tkzexample} @@ -92,7 +94,7 @@ defines the macro \tkzcname{dAB}. \toprule arguments & example & explanation \\ \midrule -\TAline{(pt1,pt2)\{name of macro\}} {\tkzcname{tkzCalcLength}[pt](A,B)}{\tkzcname{dAB} gives $AB$ in pt} +\TAline{(pt1,pt2)\{name of macro\}} {\tkzcname{tkzCalcLength}(A,B)}{\tkzcname{dAB} gives $AB$ in cm} \bottomrule \end{tabular} @@ -127,7 +129,7 @@ Only one option \tkzDrawArc[R](B,\dAB)(80,110) \tkzDrawPoints(A,B,C,D) \tkzDrawSegments[color=gray,style=dashed](B,C C,D) - \tkzLabelPoints(A,B,C,D) + \tkzLabelPoints[below left](A,B,C,D) \end{tikzpicture} \end{tkzexample} @@ -139,13 +141,13 @@ The macro \tkzcname{tkzDefCircle[radius](A,B)} defines the radius that we retrie \begin{tikzpicture}[scale=.5] \tkzDefPoint(0,0){A} \tkzDefPoint(3,-4){B} - \tkzDefCircle[through](A,B) - \tkzGetLength{rABcm} + \tkzDefMidPoint(A,B) \tkzGetPoint{M} + \tkzCalcLength(M,B)\tkzGetLength{rAB} \tkzDrawCircle(A,B) \tkzDrawPoints(A,B) \tkzLabelPoints(A,B) \tkzDrawSegment[dashed](A,B) - \tkzLabelSegment(A,B){$\pgfmathprintnumber{\rABcm}$} + \tkzLabelSegment(A,B){$\pgfmathprintnumber{\rAB}$} \end{tikzpicture} \end{tkzexample} @@ -183,7 +185,7 @@ arguments & example & explanation \\ \end{tabular} \medskip -\noindent{The result can be used with \tkzcname{len}\tkzname{pt}} +\emph{The result can be used with \tkzcname{len}\ \tkzname{pt}} \end{NewMacroBox} @@ -203,7 +205,7 @@ arguments & example & explanation \\ \end{tabular} \medskip -Stores in two macros the coordinates of a point. If the name of the macro is \tkzname{p}, then \tkzcname{px} and \tkzcname{py} give the coordinates of the chosen point with the cm as unit. +\emph{Stores in two macros the coordinates of a point. If the name of the macro is \tkzname{p}, then \tkzcname{px} and \tkzcname{py} give the coordinates of the chosen point with the cm as unit.} \end{NewMacroBox} \subsubsection{Coordinate transfer with \tkzcname{tkzGetPointCoord}} @@ -249,7 +251,8 @@ arguments & example & explanation \\ \emph{The points have exchanged their coordinates.} \end{NewMacroBox} -\subsubsection{Example} + +\subsubsection{Use of \tkzcname{tkzSwapPoints}} \begin{tkzexample}[width=6cm,small] \begin{tikzpicture} @@ -259,4 +262,217 @@ arguments & example & explanation \\ \tkzLabelPoints(O,A,B) \end{tikzpicture} \end{tkzexample} + +\subsection{Dot Product} +In Euclidean geometry, the dot product of the Cartesian coordinates of two vectors is widely used. + +\begin{NewMacroBox}{tkzDotProduct}{\parg{$pt1$,$pt2$,$pt3$}}% + The dot product of two vectors $\overrightarrow{u} = [a,b]$ and $\overrightarrow{v} = [a',b']$ is defined as: $\overrightarrow{u}\cdot \overrightarrow{v} = aa' + bb'$ + +$\overrightarrow{u} = \overrightarrow{pt1pt2}$ $\overrightarrow{v} = \overrightarrow{pt1pt3}$ + +\begin{tabular}{lll}% +arguments & example & explanation \\ +\midrule +\TAline{(pt1,pt2,pt3)} {\tkzcname{tkzDotProduct}(A,B,C)}{the result is $\overrightarrow{AB}\cdot \overrightarrow{AC}$} +\end{tabular} + +\emph{The result is a number that can be retrieved with \tkzcname{tkzGetResult}.} +\end{NewMacroBox} + +\subsubsection{Simple example} % (fold) +\label{ssub:simple_example} + +\begin{tkzexample}[small,latex=7cm] +\begin{tikzpicture} + \tkzDefPoints{-2/-3/A,4/0/B,1/3/C} + \tkzDefPointBy[projection= onto A--B](C) + \tkzGetPoint{H} + \tkzDrawSegment(C,H) + \tkzMarkRightAngle(C,H,A) + \tkzDrawSegments[vector style](A,B A,C) + \tkzDrawPoints(A,H) \tkzLabelPoints(A,B,H) + \tkzLabelPoints[above](C) + \tkzDotProduct(A,B,C) \tkzGetResult{pabc} + \pgfmathparse{round(10*\pabc)/10} + \let\pabc\pgfmathresult + \node at (1,-3) {% + $\overrightarrow{PA}\cdot \overrightarrow{PB}=\pabc$}; + \tkzDotProduct(A,H,B) \tkzGetResult{phab} + \pgfmathparse{round(10*\phab)/10} + \let\phab\pgfmathresult + \node at (1,-4) {$PA \times PH = \phab $}; +\end{tikzpicture} +\end{tkzexample} +% subsubsection simple_example (end) + + +\subsubsection{Cocyclic points} % (fold) +\label{ssub:cocyclicpts} + +\begin{tkzexample}[small,latex=7cm] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{1/2/O,5/2/B,2/2/P,3/3/Q} + \tkzInterLC[common=B](O,B)(O,B) \tkzGetFirstPoint{A} + \tkzInterLC[common=B](P,Q)(O,B) \tkzGetPoints{C}{D} + \tkzDrawCircle(O,B) + \tkzDrawSegments(A,B C,D) + \tkzDrawPoints(A,B,C,D,P) + \tkzLabelPoints(P) + \tkzLabelPoints[below left](A,C) + \tkzLabelPoints[above right](B,D) + \tkzDotProduct(P,A,B) \tkzGetResult{pab} + \pgfmathparse{round(10*\pab)/10} + \let\pab\pgfmathresult + \tkzDotProduct(P,C,D) \tkzGetResult{pcd} + \pgfmathparse{round(10*\pcd)/10} + \let\pcd\pgfmathresult + \node at (1,-3) {% + $\overrightarrow{PA}\cdot \overrightarrow{PB} = + \overrightarrow{PC}\cdot \overrightarrow{PD}$}; + \node at (1,-4)% + {$\overrightarrow{PA}\cdot \overrightarrow{PB} =\pab$}; + \node at (1,-5){% + $\overrightarrow{PC}\cdot \overrightarrow{PD} =\pcd$}; +\end{tikzpicture} +\end{tkzexample} +% subsubsection cocyclicpts (end) + + +\subsection{Power of a point with respect to a circle} + +\begin{NewMacroBox}{tkzPowerCircle}{\parg{$pt1$}\parg{$pt2$,$pt3$}}% +\begin{tabular}{lll}% +arguments & example & explanation \\ +\midrule +\TAline{(pt1)(pt2,pt3)} {\tkzcname{tkzPowerCircle}(A)(O,M)}{power of $A$ with respect to the circle (O,A)} +\end{tabular} + +\emph{The result is a number that represents the power of a point with respect to a circle.} +\end{NewMacroBox} + +\subsubsection{Power from the radical axis} % (fold) +\label{ssub:power} + +In this example, the radical axis $(EF)$ has been drawn. A point $H$ has been chosen on $(EF)$ and the power of the point $H$ with respect to the circle of center $A$ has been calculated as well as $PS^2$. You can check that the power of $H$ with respect to the circle of center $C$ as well as $HS'^2, HT^2, HT'^2$ give the same result. + +\begin{tkzexample}[small,latex=7cm] +\begin{tikzpicture}[scale=.5] + \tkzDefPoints{-1/0/A,0/5/B,5/-1/C,7/1/D} + \tkzDrawCircles(A,B C,D) + \tkzDefRadicalAxis(A,B)(C,D) \tkzGetPoints{E}{F} + \tkzDrawLine[add=1 and 2](E,F) + \tkzDefPointOnLine[pos=1.5](E,F) \tkzGetPoint{H} + \tkzDefLine[tangent from = H](A,B)\tkzGetPoints{T}{T'} + \tkzDefLine[tangent from = H](C,D)\tkzGetPoints{S}{S'} + \tkzDrawSegments(H,T H,T' H,S H,S') + \tkzDrawPoints(A,B,C,D,E,F,H,T,T',S,S') + \tkzPowerCircle(H)(A,B) \tkzGetResult{pw} + \tkzDotProduct(H,S,S) \tkzGetResult{phtt} + \node {Power $\approx \pw \approx \phtt$}; +\end{tikzpicture} +\end{tkzexample} +% subsubsection power (end) + +\subsection{Radical axis} + +In geometry, the radical axis of two non-concentric circles is the set of points whose power with respect to the circles are equal. Here |\tkzDefRadicalAxis(A,B)(C,D)| gives the radical axis of the two circles $\mathcal{C}(A,B)$ and $\mathcal{C}(C,D)$. + +\begin{NewMacroBox}{tkzDefRadicalAxis}{\parg{$pt1$,$pt2$}\parg{$pt3$,$pt4$}}% +\begin{tabular}{lll}% +arguments & example & explanation \\ +\midrule +\TAline{(pt1,pt2)(pt3,pt4)} {\tkzcname{tkzDefRadicalAxis}(A,B)(C,D)}{Two circles with centers $A$ and $C$} +\midrule +\end{tabular} + + +\emph{The result is two points of the radical axis.} +\end{NewMacroBox} + +\subsubsection{Two circles disjointed} % (fold) +\label{ssub:two_circles_disjointed} + + +\begin{tkzexample}[small,latex=8cm] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{-1/0/A,0/2/B,4/-1/C,4/0/D} + \tkzDrawCircles(A,B C,D) + \tkzDefRadicalAxis(A,B)(C,D) + \tkzGetPoints{E}{F} + \tkzDrawLine[add=1 and 2](E,F) + \tkzDrawLine[add=.5 and .5](A,C) +\end{tikzpicture} +\end{tkzexample} +% subsubsection two_circles_disjointed (end) + +\subsubsection{Three circles} % (fold) +\label{ssub:threecircles} + + + +\begin{tkzexample}[small,latex=8cm] +\begin{tikzpicture}[scale=.4] + \tkzDefPoints{0/0/A,5/0/a,7/-1/B,3/-1/b,5/-4/C,2/-4/c} + \tkzDrawCircles(A,a B,b C,c) + \tkzDefRadicalAxis(A,a)(B,b) \tkzGetPoints{i}{j} + \tkzDefRadicalAxis(A,a)(C,c) \tkzGetPoints{k}{l} + \tkzDefRadicalAxis(C,c)(B,b) \tkzGetPoints{m}{n} + \tkzDrawLines[new](i,j k,l m,n) +\end{tikzpicture} +\end{tkzexample} +% subsubsection threecircles (end) + +\subsection{\tkzcname{tkzIsLinear}, \tkzcname{tkzIsOrtho}} + \begin{NewMacroBox}{tkzIsLinear}{\parg{$pt1$,$pt2$,$pt3$}}% + \begin{tabular}{lll}% + arguments & example & explanation \\ + \midrule + \TAline{(pt1,pt2,pt3)} {\tkzcname{tkzIsLinear}(A,B,C)}{$A,B,C$ aligned ?} + \midrule + \end{tabular} + + \emph{\tkzcname{tkzIsLinear} allows to test the alignment of the three points $pt1$,$pt2$,$pt3$. } + \end{NewMacroBox} + + \begin{NewMacroBox}{tkzIsOrtho}{\parg{$pt1$,$pt2$,$pt3$}}% + \begin{tabular}{lll}% + arguments & example & explanation \\ + \midrule + \TAline{(pt1,pt2,pt3)} {\tkzcname{tkzIsOrtho}(A,B,C)}{$(AB)\perp (AC)$ ? } + \midrule + \end{tabular} + + \emph{\tkzcname{tkzIsOrtho} allows to test the orthogonality of lines $(pt1pt2)$ and $(pt1pt3)$. } + \end{NewMacroBox} + + \subsubsection{Use of \tkzcname{tkzIsOrtho} and \tkzcname{tkzIsLinear}} + +\begin{tkzexample}[small,latex=7cm] + \begin{tikzpicture} + \tkzDefPoints{1/-2/A,5/0/B} + \tkzDefCircle[diameter](A,B) \tkzGetPoint{O} + \tkzDrawCircle(O,A) + \tkzDefPointBy[rotation= center O angle 60](B) + \tkzGetPoint{C} + \tkzDefPointBy[rotation= center O angle 60](A) + \tkzGetPoint{D} + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,D,O) + \tkzIsOrtho(C,A,B) + \iftkzOrtho + \tkzDrawPolygon[blue](A,B,C) + \tkzDrawPoints[blue](A,B,C,D) + \else + \tkzDrawPoints[red](A,B,C,D) + \fi + \tkzIsLinear(O,C,D) + \iftkzLinear + \tkzDrawSegment[orange](C,D) + \fi +\end{tikzpicture} + +\end{tkzexample} + + \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-triangles.tex b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-triangles.tex index 7eb2875ec73..27d5304b6a6 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-triangles.tex +++ b/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-triangles.tex @@ -18,6 +18,7 @@ The following macros will allow you to define or construct a triangle from \tkzn \item \tkzname{cheops} determines a third point such that the triangle is isosceles with side measurements proportional to $2$, $\Phi$ and $\Phi$. \end{itemize} +\newpage \begin{NewMacroBox}{tkzDefTriangle}{\oarg{local options}\parg{A,B}}% The points are ordered because the triangle is constructed following the direct direction of the trigonometric circle. This macro is either used in partnership with \tkzcname{tkzGetPoint} or by using \tkzname{tkzPointResult} if it is not necessary to keep the name. @@ -34,16 +35,17 @@ options & default & definition \\ \TOline{pythagoras}{equilateral}{same as above} \TOline{egyptian}{equilateral}{same as above} \TOline{school} {equilateral}{angles of 30, 60 and 90 degrees } -\TOline{gold}{equilateral}{angles of 72, 72 and 36 degrees, $A$ is the apex} -\TOline{euclid} {equilateral}{same as above but $[AB]$ is the base} -\TOline{golden} {equilateral}{B rectangle and $AB/AC = \Phi$} +\TOline{gold}{equilateral}{B rectangle and $AB/AC = \Phi$} +\TOline{euclid} {equilateral}{angles of 72, 72 and 36 degrees, $A$ is the apex} +\TOline{golden} {equilateral}{angles of 72, 72 and 36 degrees, $C$ is the apex} +\TOline{sublime} {equilateral}{angles of 72, 72 and 36 degrees, $C$ is the apex} \TOline{cheops} {equilateral}{AC=BC, AC and BC are proportional to $2$ and $\Phi$.} \TOline{swap} {false}{gives the symmetric point with respect to $AB$} \bottomrule \end{tabular} \medskip -\tkzcname{tkzGetPoint} allows you to store the point otherwise \tkzname{tkzPointResult} allows for immediate use. +\emph{\tkzcname{tkzGetPoint} allows you to store the point otherwise \tkzname{tkzPointResult} allows for immediate use.} \end{NewMacroBox} \subsubsection{Option \tkzname{equilateral}} @@ -94,6 +96,8 @@ The angles are 30, 60 and 90 degrees. \tkzLabelAngle[pos=0.8](A,C,B){$60^\circ$} \tkzDrawSegments(A,B) \tkzDrawSegments[new](A,C B,C) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} @@ -108,10 +112,10 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \tkzDrawSegments(A,B) \tkzDrawSegments[new](A,C B,C) \tkzMarkRightAngles(A,B,C) - \tkzLabelPoint[above,new](C){$C$} \tkzDrawPoints[new](C) \tkzDrawPoints(A,B) - \tkzLabelPoints(A,B) + \tkzLabelPoints[above](A,B) + \tkzLabelPoints[new](C) \end{tikzpicture} \end{tkzexample} @@ -148,6 +152,23 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \end{tikzpicture} \end{tkzexample} +\subsubsection{Option \tkzname{euclid}} +\tkzimp{Euclid} and \tkzimp{golden} are identical but the segment AB is a base in one and a side in the other. + +\begin{tkzexample}[latex=7 cm,small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} + \tkzDefTriangle[euclid](A,B)\tkzGetPoint{C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(C) + \tkzLabelPoints[above](A,B) + \tkzLabelAngle[pos=0.8](A,B,C){$72^\circ$} + \tkzLabelAngle[pos=0.8](B,C,A){$72^\circ$} + \tkzLabelAngle[pos=0.8](C,A,B){$36^\circ$} +\end{tikzpicture} +\end{tkzexample} + \subsubsection{Option \tkzname{isosceles right}} \begin{tkzexample}[latex=7 cm,small] \begin{tikzpicture} @@ -158,7 +179,8 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \tkzDrawPolygons(A,B,C) \tkzDrawPoints(A,B,C) \tkzMarkRightAngles(A,C,B) - \tkzLabelPoints(A,B,C) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} @@ -170,31 +192,14 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \tkzGetPoint{C} \tkzDrawPolygon(A,B,C) \tkzDrawPoints(A,B,C) - \tkzLabelPoints(B) \tkzLabelPoints[below](A,C) - \tkzLabelAngle[pos=0.8](C,A,B){$36^\circ$} - \tkzLabelAngle[pos=0.8](A,B,C){$72^\circ$} - \tkzLabelAngle[pos=0.8](B,C,A){$72^\circ$} -\end{tikzpicture} -\end{tkzexample} - - -\subsubsection{Option \tkzname{euclid}} -\tkzimp{Euclid} and \tkzimp{gold} are identical but the segment AB is a base in one and a side in the other. - -\begin{tkzexample}[latex=7 cm,small] -\begin{tikzpicture}[scale=.75] - \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} - \tkzDefTriangle[euclid](A,B)\tkzGetPoint{C} - \tkzDrawPolygon(A,B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C) - \tkzLabelAngle[pos=0.8](B,A,C){$72^\circ$} - \tkzLabelAngle[pos=0.8](C,B,A){$72^\circ$} - \tkzLabelAngle[pos=0.8](A,C,B){$36^\circ$} + \tkzLabelPoints[above](A,B) + \tkzLabelPoints[below](C) + \tkzMarkRightAngle(A,B,C) + \tkzText(0,-2){$\dfrac{AC}{AB}=\varphi$} \end{tikzpicture} \end{tkzexample} +\clearpage \subsection{Specific triangles with \tkzcname{tkzDefSpcTriangle}} The centers of some triangles have been defined in the "points" section, here it is a question of determining the three vertices of specific triangles. @@ -202,7 +207,6 @@ The centers of some triangles have been defined in the "points" section, here it \begin{NewMacroBox}{tkzDefSpcTriangle}{\oarg{local options}\parg{p1,p2,p3}\marg{r1,r2,r3}} The order of the points is important! p1p2p3 defines a triangle then the result is a triangle whose vertices have as reference a combination with \tkzname{name} and r1,r2, r3. If \tkzname{name} is empty then the references are r1,r2 and r3. - \medskip \begin{tabular}{lll}% \toprule @@ -223,7 +227,6 @@ options & default & definition \\ \TOline{name} {empty}{used to name the vertices} \midrule \end{tabular} - \end{NewMacroBox} \subsubsection{How to name the vertices} @@ -243,20 +246,22 @@ The geometric centroid of the polygon vertices of a triangle is the point $G$ ( In the following example, we obtain the Euler circle which passes through the previously defined points. \begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[rotate=90,scale=.75] - \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} - \tkzDefTriangleCenter[centroid](A,B,C) - \tkzGetPoint{M} - \tkzDefSpcTriangle[medial,name=M](A,B,C){_A,_B,_C} - \tkzDrawPolygon(A,B,C) - \tkzDrawSegments[dashed,new](A,M_A B,M_B C,M_C) - \tkzDrawPolygon[new](M_A,M_B,M_C) - \tkzDrawPoints(A,B,C) - \tkzDrawPoints[new](M,M_A,M_B,M_C) - \tkzAutoLabelPoints[center=M,font=\scriptsize]% -(A,B,C,M_A,M_B,M_C) - \tkzLabelPoints[font=\scriptsize](M) -\end{tikzpicture} + \begin{tikzpicture}[rotate=90,scale=.75] + \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} + \tkzDefTriangleCenter[centroid](A,B,C) + \tkzGetPoint{M} + \tkzDefSpcTriangle[medial,name=M](A,B,C){_A,_B,_C} + \tkzDrawPolygon(A,B,C) + \tkzDrawSegments[dashed,new](A,M_A B,M_B C,M_C) + \tkzDrawPolygon[new](M_A,M_B,M_C) + \tkzDrawPoints(A,B,C) + \tkzDrawPoints[new](M,M_A,M_B,M_C) + \tkzLabelPoints[above](B) + \tkzLabelPoints[below](A,C,M_B) + \tkzLabelPoints[right](M_C) + \tkzLabelPoints[left](M_A) + \tkzLabelPoints[font=\scriptsize](M) + \end{tikzpicture} \end{tkzexample} \subsubsection{Option \tkzname{in} or \tkzname{incentral} } @@ -270,18 +275,17 @@ respective opposite sides. \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1] - \tkzDefPoints{ 0/0/A,5/0/B,1/3/C} + \tkzDefPoints{ 0/0/A,5/0/B,2/3/C} \tkzDefSpcTriangle[in,name=I](A,B,C){_a,_b,_c} - \tkzInCenter(A,B,C)\tkzGetPoint{I} + \tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{a} + \tkzDrawCircle(I,a) \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](I_a,I_b,I_c) - \tkzDrawPoints(A,B,C,I,I_a,I_b,I_c) - \tkzDrawCircle[in](A,B,C) \tkzDrawSegments[dashed,new](A,I_a B,I_b C,I_c) - \tkzAutoLabelPoints[center=I,% - new,font=\scriptsize](I_a,I_b,I_c) - \tkzAutoLabelPoints[center=I, - font=\scriptsize](A,B,C) + \tkzDrawPoints(A,B,C,I,I_a,I_b,I_c) + \tkzLabelPoints[below](A,B,I_c) + \tkzLabelPoints[above left](I_b) + \tkzLabelPoints[above right](C,I_a) \end{tikzpicture} \end{tkzexample} @@ -317,15 +321,16 @@ We obtain the intersections of the bisectors with the sides. \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} \tkzDefSpcTriangle[intouch,name=X](A,B,C){_a,_b,_c} \tkzInCenter(A,B,C)\tkzGetPoint{I} + \tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{i} + \tkzDrawCircle(I,i) \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](X_a,X_b,X_c) \tkzDrawPoints(A,B,C) \tkzDrawPoints[new](X_a,X_b,X_c) - \tkzDrawCircle[in](A,B,C) - \tkzAutoLabelPoints[center=I,blue,font=\scriptsize]% -(X_a,X_b,X_c) - \tkzAutoLabelPoints[center=I,red,font=\scriptsize]% -(A,B,C) + \tkzLabelPoints[right](X_a) + \tkzLabelPoints[left](X_b) + \tkzLabelPoints[above](C) + \tkzLabelPoints[below](A,B,X_c) \end{tikzpicture} \end{tkzexample} @@ -355,10 +360,13 @@ We obtain the points of contact of the exinscribed circles as well as the triang \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](T_a,T_b,T_c) \tkzDrawPoints(A,B,C,N_a) -\tkzLabelPoints(N_a) -\tkzAutoLabelPoints[center=N_a](A,B,C) -\tkzAutoLabelPoints[center=G,new, - dist=.4](T_a,T_b,T_c) +\tkzDrawPoints[new](T_a,T_b,T_c) +\tkzLabelPoints[below left](A) +\tkzLabelPoints[below](N_a,B) +\tkzLabelPoints[above](C) +\tkzLabelPoints[new,below left](T_b) +\tkzLabelPoints[new,below right](T_c) +\tkzLabelPoints[new,right=6pt](T_a) \tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A) \end{tikzpicture} @@ -384,7 +392,6 @@ Given a triangle $ABC$, the triangle $H_AH_BH_C$ whose vertices are endpoints of \tkzDrawPoints[new](H_A,H_B,H_C) \tkzDrawPolygon[new,fill=orange!20, opacity=.3](H_A,H_B,H_C) - \tkzDrawPoint(a) \tkzLabelPoints(C) \tkzLabelPoints[left](B) \tkzLabelPoints[above](A) @@ -401,7 +408,7 @@ The Feuerbach triangle is the triangle formed by the three points of tangency of The points of tangency define the Feuerbach triangle. \begin{tkzexample}[latex=8cm,small] -\begin{tikzpicture}[scale=1.25] +\begin{tikzpicture}[scale=1] \tkzDefPoint(0,0){A} \tkzDefPoint(3,0){B} \tkzDefPoint(0.5,2.5){C} @@ -412,16 +419,18 @@ The Feuerbach triangle is the triangle formed by the three points of tangency of name=J](A,B,C){_a,_b,_c} \tkzDefSpcTriangle[extouch, name=T](A,B,C){_a,_b,_c} - \tkzDrawPoints[blue](J_a,J_b,J_c,% - F_a,F_b,F_c,A,B,C) + \tkzLabelPoints[below left](J_a,J_b,J_c) \tkzClipBB \tkzShowBB \tkzDrawCircle[purple](N,F_a) \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](F_a,F_b,F_c) \tkzDrawCircles[gray](J_a,F_a J_b,F_b J_c,F_c) - \tkzAutoLabelPoints[center=N,dist=.3, - font=\scriptsize](A,B,C,F_a,F_b,% - F_c,J_a,J_b,J_c) + \tkzDrawPoints[blue](J_a,J_b,J_c,% + F_a,F_b,F_c,A,B,C) + \tkzLabelPoints(A,B,F_c) + \tkzLabelPoints[above](C) + \tkzLabelPoints[right](F_a) + \tkzLabelPoints[left](F_b) \end{tikzpicture} \end{tkzexample} @@ -442,8 +451,11 @@ The tangential triangle is the triangle $T_aT_bT_c$ formed by the lines tangent \tkzDefCircle[circum](A,B,C) \tkzGetPoint{O} \tkzDrawCircle(O,A) - \tkzLabelPoints(A,B,C) - \tkzLabelPoints[new](T_a,T_b,T_c) + \tkzLabelPoints(A) + \tkzLabelPoints[above](B) + \tkzLabelPoints[left](C) + \tkzLabelPoints[new](T_b,T_c) + \tkzLabelPoints[new,left](T_a) \end{tikzpicture} \end{tkzexample} @@ -487,27 +499,27 @@ The Euler triangle of a triangle $ABC$ is the triangle $E_AE_BE_C$ whose vertice \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} \tkzDefSpcTriangle[euler,name=E](A,B,C){a,b,c} \tkzDefSpcTriangle[orthic,name=H](A,B,C){a,b,c} - \tkzDefExCircle(A,B,C) \tkzGetPoint{I} \tkzGetLength{rI} - \tkzDefExCircle(C,A,B) \tkzGetPoint{J} \tkzGetLength{rJ} - \tkzDefExCircle(B,C,A) \tkzGetPoint{K} \tkzGetLength{rK} + \tkzDefExCircle(A,B,C) \tkzGetPoints{I}{i} + \tkzDefExCircle(C,A,B) \tkzGetPoints{J}{j} + \tkzDefExCircle(B,C,A) \tkzGetPoints{K}{k} \tkzDrawPoints[orange](I,J,K) \tkzLabelPoints[font=\scriptsize](A,B,C,I,J,K) \tkzClipBB - \tkzInterLC[R](I,C)(I,\rI) \tkzGetSecondPoint{Fc} - \tkzInterLC[R](J,B)(J,\rJ) \tkzGetSecondPoint{Fb} - \tkzInterLC[R](K,A)(K,\rK) \tkzGetSecondPoint{Fa} + \tkzInterLC(I,C)(I,i) \tkzGetSecondPoint{Fc} + \tkzInterLC(J,B)(J,j) \tkzGetSecondPoint{Fb} + \tkzInterLC(K,A)(K,k) \tkzGetSecondPoint{Fa} \tkzDrawLines[add=1.5 and 1.5](A,B A,C B,C) - \tkzDrawCircle[euler,orange](A,B,C) \tkzGetPoint{E} + \tkzDefCircle[euler](A,B,C) \tkzGetPoints{E}{e} + \tkzDrawCircle[orange](E,e) \tkzDrawSegments[orange](E,I E,J E,K) \tkzDrawSegments[dashed](A,Ha B,Hb C,Hc) - \tkzDrawCircles[R](J,{\rJ} I,{\rI} K,{\rK}) + \tkzDrawCircles(J,j I,i K,k) \tkzDrawPoints(A,B,C) \tkzDrawPoints[orange](E,I,J,K,Ha,Hb,Hc,Ea,Eb,Ec,Fa,Fb,Fc) \tkzLabelPoints[font=\scriptsize](E,Ea,Eb,Ec,Ha,Hb,Hc,Fa,Fb,Fc) \end{tikzpicture} \end{tkzexample} - \subsubsection{Option \tkzname{symmedial}} The symmedial triangle$ K_AK_BK_C$ is the triangle whose vertices are the intersection points of the symmedians with the reference triangle $ABC$. @@ -521,7 +533,10 @@ The symmedial triangle$ K_AK_BK_C$ is the triangle whose vertices are the inters \tkzDrawPolygon(A,B,C) \tkzDrawSegments[new](A,K_A B,K_B C,K_C) \tkzDrawPoints(A,B,C,K,K_A,K_B,K_C) -\tkzLabelPoints[font=\scriptsize](A,B,C,K,K_A,K_B,K_C) +\tkzLabelPoints(A,B,K,K_C) +\tkzLabelPoints[above](C) +\tkzLabelPoints[right](K_A) +\tkzLabelPoints[left](K_B) \end{tikzpicture} \end{tkzexample} @@ -535,23 +550,12 @@ arguments & example & explanation \\ \midrule \end{tabular} +\medskip \emph{The triangle is unchanged.} \end{NewMacroBox} \subsubsection{Modification of the \tkzname{school} triangle} -This triangle is constructed from the segment $[AB]$ on $[A,x)$ -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture} - \tkzDefPoints{0/0/A,4/0/B,6/0/x} - \tkzDefTriangle[school](A,B) - \tkzGetPoint{C} - \tkzDrawSegments(A,B B,x) - \tkzDrawSegments(A,C B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B,C,x) - \tkzMarkRightAngles(C,B,A) -\end{tikzpicture} -\end{tkzexample} +This triangle is constructed from the segment $[AB]$ on $[A,x)$. If we want the segment $[AC]$ to be on $[A,x)$, we just have to swap $B$ and $C$. diff --git a/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf b/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf Binary files differindex 276253b32c5..8d26d14cea9 100644 --- a/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf +++ b/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg index 7516b752a3c..97a5b3c4e64 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg @@ -16,9 +16,9 @@ % and save the file in a directory part of your TEXINPUTS environment % variable. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-euclide.cfg} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-euclide.cfg} %<------ colors ---------------------------------------–> \def\tkz@backgroundcolor{white} \def\tkz@textcolor{black} @@ -26,35 +26,75 @@ \def\tkz@fillcolor{\tkz@backgroundcolor} \def\tkz@mainlinecolor{\tkz@textcolor} \def\tkz@otherlinecolor{\tkz@mainlinecolor!50} -%<------------------------- Cartesian system -----------------------------–> -% Default unity cm -% Geometry Euclidean with unity for x and y = 1cm ---> step = 1 -% 0 ≤ x ≤ 10 -% 0 ≤ y ≤ 10 -\def\tkz@init@xorigine{0} -\def\tkz@init@yorigine{0} -\def\tkz@init@xstep{1} -\def\tkz@init@ystep{1} -\def\tkz@init@xmin{0} -\def\tkz@init@ymin{0} -\def\tkz@init@xmax{10} -\def\tkz@init@ymax{10} -\def\tkz@init@xdec{1} -\def\tkz@init@ydec{1} %<-------------------------- points -----------------------------------–> \def\tkz@euc@pointshape{circle} \def\tkz@euc@pointcolor{\tkz@mainlinecolor} \def\tkz@euc@labelcolor{\tkz@mainlinecolor} -\def\tkz@euc@pointsize{3} +\def\tkz@euc@pointsize{2} \def\tkz@euc@pointpos{below right} \def\tkz@euc@segmentcolor{\tkz@mainlinecolor} \def\tkz@euc@circlecolor{\tkz@mainlinecolor} +\tikzset{point style/.style = {draw = \tkz@euc@pointcolor, + inner sep = 0pt, + shape = \tkz@euc@pointshape, + minimum size = \tkz@euc@pointsize, + fill = \tkz@euc@pointcolor + } + } +% label for the point +\tikzset{label style/.style={ below, \tkz@euc@labelcolor, + font = \normalsize} + } +\tikzset{label angle style/.style={ \tkz@euc@labelcolor, + font = \normalsize} + } %<-------------------------- line ---------------------------------------–> \def\tkz@euc@linecolor{\tkz@mainlinecolor} -\def\tkz@euc@linewidth{0.6pt} +\def\tkz@euc@linewidth{0.2pt} \def\tkz@euc@linestyle{solid} \def\tkz@euc@lineleft{.2} \def\tkz@euc@lineright{.2} +\tikzset{% +line style/.style = {% + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, + add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}, + line cap = round + } +} +%<------------------------- circle -----------------------------------–> +\def\tkz@euc@circlelw{\tkz@euc@linewidth} +\def\tkz@euc@circlecolor{\tkz@otherlinecolor} +\def\tkz@euc@circlestyle{solid} +\tikzset{% +circle style/.style = {% + color = \tkz@euc@circlecolor, + line width = \tkz@euc@circlelw, + style = \tkz@euc@circlestyle} +} +\tikzset{label circle style/.style = {% + color = \tkz@mainlinecolor} +} +%<------------------------- compass -----------------------------------–> +\def\tkz@euc@compasscolor{\tkz@otherlinecolor} +\def\tkz@euc@compasswidth{\tkz@euc@linewidth} +\def\tkz@euc@compassstyle{solid} +\tikzset{% +compass style/.style = {% + color = \tkz@euc@compasscolor, + line width = \tkz@euc@compasswidth, + style = \tkz@euc@compassstyle} +} +%<------------------------- arc -----------------------------------–> +\def\tkz@euc@arclw{\tkz@euc@linewidth} +\def\tkz@euc@arccolor{\tkz@mainlinecolor} +\def\tkz@euc@arcstyle{solid} +\tikzset{% +arc style/.style={% + color = \tkz@euc@arccolor, + line width = \tkz@euc@linewidth} +} %<------ axes cartesian system ---------------------------------------–> \def\tkz@init@color{\tkz@textcolor} \def\tkz@init@lw{0.4 pt} @@ -86,14 +126,7 @@ \def\tkz@init@gradsize{\textstyle} \def\tkzRatioLineGrid{0.75} \def\tkz@gd@sublw{0.4 pt}% size line sub grid -%<------------------------- compass -----------------------------------–> -\def\tkz@euc@compasscolor{\tkz@otherlinecolor} -\def\tkz@euc@compasswidth{0.4pt} -\def\tkz@euc@compassstyle{solid} -%<------------------------- arc -----------------------------------–> -\def\tkz@arc@lw{0.4pt} -\def\tkz@arc@color{\tkz@mainlinecolor} -\def\tkz@arc@style{solid} + %<---------------------------- mark -----------------------------------–> \def\tkz@mk@color{\tkz@mainlinecolor} \def\tkz@mk@mark{*} @@ -114,41 +147,11 @@ } \tikzset{yaxe style/.style = {> = latex, ->} } - -\tikzset{point style/.style = {draw = \tkz@euc@pointcolor, - inner sep = 0pt, - shape = \tkz@euc@pointshape, - minimum size = \tkz@euc@pointsize, - fill = \tkz@euc@pointcolor - } - } -% label for the point -\tikzset{label style/.style={ \tkz@euc@pointpos, - \tkz@euc@labelcolor, - font = \normalsize} - } -\tikzset{label angle style/.style={ \tkz@euc@labelcolor, - font = \normalsize} - } -\tikzset{line style/.style = {line width = \tkz@euc@linewidth, - color = \tkz@euc@linecolor, - style = \tkz@euc@linestyle, - add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}, - line cap = round - } - } -\tikzset{label seg style/.style = {color = \tkz@mainlinecolor, - auto - } - } \tikzset{rep style/.style = { ->, >=latex} } -\tikzset{compass style/.style = {color = \tkz@euc@compasscolor, - line width = \tkz@euc@compasswidth, - style = \tkz@euc@compassstyle} - } + \tikzset{mark style/.style = {mark = \tkz@mk@mark, mark size = \tkz@mk@size, mark options = {color= \tkz@mk@color, @@ -156,7 +159,22 @@ } } } -\tikzset{arc style/.style={gray,thin}} + +%<------------------------- Cartesian system -----------------------------–> +% Default unity cm +% Geometry Euclidean with unity for x and y = 1cm ---> step = 1 +% 0 ≤ x ≤ 10 +% 0 ≤ y ≤ 10 +\def\tkz@init@xorigine{0} +\def\tkz@init@yorigine{0} +\def\tkz@init@xstep{1} +\def\tkz@init@ystep{1} +\def\tkz@init@xmin{0} +\def\tkz@init@ymin{0} +\def\tkz@init@xmax{10} +\def\tkz@init@ymax{10} +\def\tkz@init@xdec{1} +\def\tkz@init@ydec{1} %<---------------------- show coord -----------------------------------–> \tikzset{arrow coord style/.style = {dashed, \tkz@euc@linecolor, @@ -180,6 +198,7 @@ left = 3pt} } % +\tikzset{help lines/.style=teal!30,ultra thin} %<--------------------------- arrow --------------------------------------–> % Syntax: % @@ -264,6 +283,7 @@ tkz arrow/.default=Latex, --(current bounding box.north east) -- (current bounding box.south east) -- cycle} }} + \def\tkzPhi{1.618034} \def\tkzInvPhi{0.618034} \def\tkzSqrtPhi{1.27202} @@ -273,4 +293,5 @@ tkz arrow/.default=Latex, \def\tkzSqrTwobyTwo{0.7071065} \def\tkzPi{3.1415926} \def\tkzEuler{2.71828182} + \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty index 6671d81a0e4..2708f4e7300 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty @@ -1,21 +1,20 @@ -% tkz-euclide.sty +% tkz-euclide.sty % Copyright 2022 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. - -%<------------------------------------------------------------> -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-euclide.sty} +%------------------------------------------------------------------------------- +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-euclide.sty} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-euclide}[ 2022/02/25 4.051b for pure Euclidean Geometry ] - +\ProvidesPackage{tkz-euclide}[ 2022/07/14 4.2c for pure Euclidean Geometry ] \@ifpackageloaded{tkz-base}{ \newdimen\tkzRadius \newdimen\tkzLength @@ -24,6 +23,7 @@ \newif\ifnormtkzcode@execute% german ? right angle %---------------------- semi circle \newif\iftkz@swap@sc +\newif\iftkz@line@normed %--------------------- circles \newif\iftkzClipOutCircle %--------------------- polygons @@ -34,11 +34,16 @@ %--------------------- intersections \newif\iftkzFlagLC\tkzFlagLCfalse \newif\iftkzFlagCC\tkzFlagCCfalse +\newif\iftkz@near\tkz@nearfalse +%--------------------- +\newif\iftkzLinear\tkzLinearfalse +\newif\iftkzOrtho\tkzOrthofalse }{ \RequirePackage{tikz} \usetikzlibrary{angles, arrows, arrows.meta, + backgrounds, calc, decorations, decorations.markings, @@ -47,16 +52,25 @@ decorations.text, decorations.pathmorphing, intersections, + math, plotmarks, + positioning, quotes, - shapes.misc + shapes.misc, + through } \RequirePackage{xfp} -%--------------------- +\usepackage{xpatch} +\xpatchcmd\pgfmathreciprocal@@ {\pgfmath@y.1\pgfmath@y\pgfmath@y.1\pgfmath@y\pgfmath@y.1\pgfmath@y\pgfmath@y.1\pgfmath@y} + {\pgfmath@y\dimexpr\pgfmath@y/10000\relax} + {}{\PatchFailed} + +%------------------------------------------------------------------------------- \newdimen\tkzRadius \newdimen\tkzLength \newdimen\tkz@radi -%--------------------- tkz registres +%------------------------------------------------------------------------------- +% tkz registres \newdimen\tkz@ax \newdimen\tkz@ay \newdimen\tkz@bx @@ -85,6 +99,10 @@ %--------------------- intersections \newif\iftkzFlagLC\tkzFlagLCfalse \newif\iftkzFlagCC\tkzFlagCCfalse +\newif\iftkz@near\tkz@nearfalse +%--------------------- utilities +\newif\iftkzLinear\tkzLinearfalse +\newif\iftkzOrtho\tkzOrthofalse %--------------------- tkz axis \newif\iftkz@X@noticks \newif\iftkz@Y@noticks @@ -113,7 +131,8 @@ \newcount\tkz@cntmk \newif\iftkz@RappReturn % protractor \newif\iftkz@RappFull -%--------------------- Init +%------------------------------------------------------------------------------- +% Init \def\tkz@xa{0} \def\tkz@xb{10} \def\tkz@ya{0} @@ -123,13 +142,12 @@ \typeout{Local configuration file tkz-euclide.cfg found and used}}{% \typeout{tkz-euclide.cfg not found}} } -%--------------------- Init +%------------------------------------------------------------------------------- \def\tkz@tmp@xa{-5} \def\tkz@tmp@xb{+5} \def\tkz@tmp@ya{-5} \def\tkz@tmp@yb{+5} -%<----------------------------------------------------------> - +%------------------------------------------------------------------------------- \DeclareOption*{} \ProcessOptions %<----------------------------------------------------------> @@ -147,11 +165,12 @@ \input{tkz-obj-eu-axesmin.tex} \input{tkz-tools-eu-colors.tex} \input{tkz-obj-eu-points.tex} +\input{tkz-obj-eu-draw-points.tex} } % next from euclide -\input{tkz-tools-eu-math.tex} -\input{tkz-tools-eu-intersections} \input{tkz-tools-eu-angles} +\input{tkz-tools-eu-intersections} +\input{tkz-tools-eu-math.tex} \input{tkz-obj-eu-compass.tex} \input{tkz-obj-eu-circles.tex} \input{tkz-obj-eu-circles-by.tex} @@ -170,4 +189,5 @@ \input{tkz-obj-eu-sectors.tex} \input{tkz-obj-eu-show.tex} \input{tkz-obj-eu-triangles} -\endinput + +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex index cc4cc0bd09a..e6192198cfc 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex @@ -10,16 +10,16 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-lib-eu-marks.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-lib-eu-marks.tex} \makeatletter %<--------------------------------------------------------------------------–> % Création des symboles %<--------------------------------------------------------------------------–> \def\tkz@undefined{none} % double bar -\pgfdeclareplotmark{||} +\pgfdeclareplotmark{ } {% \pgfpathmoveto{\pgfqpoint{2\pgflinewidth}{\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-\pgfplotmarksize}} @@ -28,7 +28,7 @@ \pgfusepathqstroke } %triple bar -\pgfdeclareplotmark{|||} +\pgfdeclareplotmark{ } {% \pgfpathmoveto{\pgfqpoint{0 pt}{\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{0 pt}{-\pgfplotmarksize}} @@ -40,7 +40,7 @@ } % An bar slant -\pgfdeclareplotmark{s|} +\pgfdeclareplotmark{s } {% \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}% {-.70710678\pgfplotmarksize}} @@ -51,7 +51,7 @@ % An double bar slant -\pgfdeclareplotmark{s||} +\pgfdeclareplotmark{s } {% \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}} @@ -59,7 +59,7 @@ \pgfpathlineto{\pgfqpoint{1\pgfplotmarksize}{\pgfplotmarksize}} \pgfusepathqstroke } -\pgfdeclareplotmark{s|||} +\pgfdeclareplotmark{s } {% \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}} diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex index 98fbfce2414..f0e53e24825 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex @@ -1,4 +1,4 @@ -% tkz-lib-eu-shape.tex + % tkz-lib-eu-shape.tex % Copyright 2022 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-lib-eu-shape.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-lib-eu-shape.tex} \makeatletter %<--------------------------------------------------------------------------–> % Création des symboles diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex index 5ee8ab60a28..883928a5a8a 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-axesmin} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-axesmin} \makeatletter \def\removedot#1.{#1} @@ -107,7 +107,8 @@ \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@xstep+\tkz@posmin}} \foreach \pos in {\tkz@posmin,...,\tkz@posmax}{% \edef\tkz@pos{\fpeval{\pos*1}}% ??? - \draw[ color = \tkz@X@color, line width = \tkz@X@tickwd, + \draw[ color = \tkz@X@color, + line width = \tkz@X@tickwd, shift = {(\tkz@pos,0)}]% (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn); } diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex index a3bcf65ec39..d0caf96a373 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-circles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-circles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzCircle center and one point @@ -37,15 +37,10 @@ rotation/.code args = {center #1 angle #2}{ \def\tkz@numcby{4} \def\tkzcenter{#1} \def\tkzangle{#2}}, - orthogonal from/.code args = {#1}{ \def\tkz@numcby{5} - \def\tkz@ptfrom{#1}}, - orthogonal through/.code args = {#1 and #2}{ \def\tkz@numcby{6} - \def\tkz@ptone{#1} - \def\tkz@pttwo{#2}}, - inversion/.code args={center #1 through #2}{ \def\tkz@numcby{7} + inversion/.code args={center #1 through #2}{ \def\tkz@numcby{5} \def\tkzcenter{#1} \def\tkzpoint{#2}}, - inversion negative/.code args = {center #1 through #2}{\def\tkz@numcby{8} + inversion negative/.code args = {center #1 through #2}{\def\tkz@numcby{6} \def\tkzcenter{#1} \def\tkzpoint{#2}} } @@ -64,14 +59,10 @@ \or% 4 \tkzDefCircleRotation(#2) \or% 5 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 6 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) - \or% 7 \tkzDefInversionCircle(#2,\tkzcenter,\tkzpoint) - \or% 8 - \tkzDefInversionNegativeCircle(#2,\tkzcenter,\tkzpoint) - \fi + \or% 6 + \tkzDefInversionNegativeCircle(#2,\tkzcenter,\tkzpoint) +\fi \endgroup } %<--------------------------------------------------------------------------–> @@ -120,24 +111,43 @@ \endgroup } %<--------------------------------------------------------------------------–> +% #3,#4 cercle d'inversion centre #3. through #4 +% Si le cercle passe par le pôle l'image est une droite \def\tkzDefInversionCircle(#1,#2,#3,#4){% \begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(#3,#4)(tkz@p1) + \tkz@@CalcLengthcm(#1,#2){tkz@lna}% + \tkz@@CalcLengthcm(#1,#3){tkz@lnb}% + \gdef\tkzMathResult{\fpeval{round(abs(\tkz@lnb - \tkz@lna),6)}} + \ifdim\tkzMathResult pt < 1 pt\relax% + \tkzURotateAngle(#1,-90)(#2) + \pgfnodealias{tkz@a}{tkzPointResult} + + \tkzUInversePoint(#3,#4)(tkz@a) \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(#3,#4)(tkz@p2) + \tkzUInversePoint(#3,#4)(#2) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \else + \tkzURotateAngle(#1,90)(#2) + \pgfnodealias{tkz@a}{tkzPointResult} + \tkzURotateAngle(#1,-90)(#2) + \pgfnodealias{tkz@b}{tkzPointResult} + \tkzUInversePoint(#3,#4)(tkz@a) + \pgfnodealias{tkz@p1}{tkzPointResult} + \tkzUInversePoint(#3,#4)(tkz@b) + \pgfnodealias{tkz@p2}{tkzPointResult} + \tkzUInversePoint(#3,#4)(#2) + \pgfnodealias{tkz@p3}{tkzPointResult} + \tkzDefCircle[circum](tkz@p3,tkz@p1,tkz@p2) + \fi \endgroup } %<--------------------------------------------------------------------------–> \def\tkzDefInversionNegativeCircle(#1,#2,#3,#4){% \begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p1) - \tkzUCSym(\tkzcenter)(tkzPointResult) + \tkzDefInversionCircle(#1,#2,#3,#4) + \tkzUCSym(\tkzcenter)(tkzFirstPointResult) \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p2) - \tkzUCSym(\tkzcenter)(tkzPointResult) + \tkzUCSym(\tkzcenter)(tkzSecondPointResult) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} \endgroup } diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex index 8eb9ce62cf9..3b309afa48f 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-circles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-circles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzCircle center and one point @@ -23,31 +23,30 @@ % through instead of radius \def\tkz@numc{0} \pgfkeys{/tkzcircle/.cd, - through/.code = \def\tkz@numc{0}, - radius/.code = \def\tkz@numc{0}, - diameter/.code = \def\tkz@numc{1}, - circum/.code = \def\tkz@numc{2}, - in/.code = \def\tkz@numc{3}, - ex/.code = \def\tkz@numc{4}, - euler/.code = \def\tkz@numc{5}, - nine/.code = \def\tkz@numc{5}, - apollonius/.code = \def\tkz@numc{6}, - orthogonal from/.code args = {#1}{\def\tkz@ptfrom{#1} - \def\tkz@numc{7}}, - orthogonal through/.code args = {#1 and #2}{\def\tkz@ptone{#1} - \def\tkz@pttwo{#2} - \def\tkz@numc{8}}, - spieker/.code = \def\tkz@numc{9}, - K/.code = \def\tkz@koeff{#1}, - K = 1, - through + R/.code = \def\tkz@numc{0}, + diameter/.code = \def\tkz@numc{1}, + circum/.code = \def\tkz@numc{2}, + in/.code = \def\tkz@numc{3}, + ex/.code = \def\tkz@numc{4}, + euler/.code = \def\tkz@numc{5}, + nine/.code = \def\tkz@numc{5}, + apollonius/.code = \def\tkz@numc{6}, + spieker/.code = \def\tkz@numc{7}, + orthogonal from/.code args = {#1}{\gdef\tkz@numc{8} + \def\tkz@ptfrom{#1}}, + orthogonal through/.code args = {#1 and #2}{\gdef\tkz@numc{9} + \def\tkz@ptone{#1} + \def\tkz@pttwo{#2}}, + K/.code = \def\tkz@koeff{#1}, + K = 1, + circum } \def\tkzDefCircle{\pgfutil@ifnextchar[{\tkz@DefCircle}{\tkz@DefCircle[]}} \def\tkz@DefCircle[#1](#2){% \begingroup \pgfqkeys{/tkzcircle}{#1} \ifcase\tkz@numc% - \tkzDefCircleThrough(#2)% + \tkzDefCircleR(#2) \or% 1 \tkzDefCircleD(#2) \or% 2 @@ -61,21 +60,24 @@ \or% 6 \tkzDefApolloniusCircle(#2) \or% 7 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 8 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) - \or% 9 \tkzDefSpiekerCircle(#2) + \or% 8 + \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) + \or% 9 + \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) \fi \endgroup } %for compatibility %<--------------------------------------------------------------------------–> +% R +%<--------------------------------------------------------------------------–> \def\tkzDefCircleR(#1,#2){% \begingroup \edef\tkzLengthResult{\fpeval{round(#2,5)}} \global\let\tkzLengthResult\tkzLengthResult - \tkzRenamePoint(#1){tkzPointResult} + \path (#1)--++(\tkzLengthResult,0) coordinate (tkzSecondPointResult); + \tkzRenamePoint(tkzSecondPointResult){tkzPointResult} \endgroup } %<--------------------------------------------------------------------------–> @@ -83,16 +85,20 @@ %<--------------------------------------------------------------------------–> \def\tkzDefCircleThrough(#1,#2){% \begingroup - \tkz@@CalcLengthcm(#1,#2){tkzLengthResult} - \tkzRenamePoint(#1){tkzPointResult} + \tkz@@CalcLengthcm(#1,#2){tkzLengthResult} + \node [draw,circle through=(#2)] at (#1) {}; + \tkzRenamePoint(#1){tkzPointResult} \endgroup } + %<--------------------------------------------------------------------------–> % Diameter Circle %<--------------------------------------------------------------------------–> \def\tkzDefCircleD(#1,#2){% \begingroup \tkzDefMidPoint(#1,#2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \pgfnodealias{tkzSecondPointResult}{#2} \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult} \endgroup } @@ -101,8 +107,10 @@ %<--------------------------------------------------------------------------–> \def\tkzDefCircumCircle(#1,#2,#3){% \begingroup - \tkzCircumCenter(#1,#2,#3) - \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}%3.06 add [cm] + \tkzCircumCenter(#1,#2,#3) + \tkzRenamePoint(tkzPointResult){tkzFirstPointResult} + \tkzRenamePoint(#1){tkzSecondPointResult} + \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}%3.06 add [cm] \endgroup } %<--------------------------------------------------------------------------–> @@ -152,6 +160,8 @@ \tkzDefMidPoint(#2,#3) \pgfnodealias{tkz@e2}{tkzPointResult} \tkzDefMidPoint(#1,#3) \pgfnodealias{tkz@e3}{tkzPointResult} \tkzCircumCenter(tkz@e1,tkz@e2,tkz@e3) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzRenamePoint(tkz@e1){tkzSecondPointResult} \tkz@@CalcLengthcm(tkzPointResult,tkz@e1){tkzLengthResult} \endgroup } @@ -163,7 +173,7 @@ \tkzEulerCenter(#1,#2,#3) \pgfnodealias{eur@pta}{tkzPointResult} \tkzDefMidPoint(#1,#2) - \tkz@@CalcLengthcm(eur@pta,tkzPointResult){tkzLengthResult} + \tkz@@CalcLengthcm(eur@pta,tkzPointResult){tkzLengthResult} \endgroup } %<--------------------------------------------------------------------------–> @@ -172,66 +182,16 @@ \def\tkzDefApolloniusCircle(#1,#2){% \begingroup \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) - \pgfnodealias{tkzSecondPointResult}{tkzPointResult} - \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) - \tkz@@CalcLengthcm(tkzPointResult,tkzFirstPointResult){tkzLengthResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius radius -%<--------------------------------------------------------------------------–> -\pgfkeys{/tkzapor/.cd, - K/.code = \def\tkz@koeff{#1},% apollonius - K = 1 - } -\def\tkzDefApolloniusRadius{\pgfutil@ifnextchar[{% - \tkz@DefApolloniusRadius}{\tkz@DefApolloniusRadius[]}} -\def\tkz@DefApolloniusRadius[#1](#2,#3){% -\begingroup - \pgfqkeys{/tkzapor}{#1} - \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3) \pgfnodealias{apo@pta}{tkzPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3) + \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) \pgfnodealias{apo@ptb}{tkzPointResult} \tkzDefMidPoint(apo@pta,apo@ptb) - \tkz@@CalcLengthcm(tkzPointResult,apo@pta){tkzLengthResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius point -%<--------------------------------------------------------------------------–> - -\pgfkeys{/tkzapop/.cd, - K/.code = \def\tkz@koeff{#1},% apollonius - K = 1 - } -\def\tkzDefApolloniusPoint{\pgfutil@ifnextchar[{\tkz@DefApolloniusPoint}{\tkz@DefApolloniusPoint[]}} -\def\tkz@DefApolloniusPoint[#1](#2,#3){% -\begingroup - \pgfqkeys{/tkzapop}{#1} - \tkzDefBarycentricPoint(#2=1,#3=\tkz@koeff) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkz@@CalcLengthcm(tkzFirstPointResult,apo@pta){tkzLengthResult} + \tkzDefBarycentricPoint(#1=1,#2=\tkz@koeff) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} \endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius center -%<--------------------------------------------------------------------------–> -\pgfkeys{/tkzapoc/.cd, - K/.code = \def\tkz@koeff{#1},% apollonius - K = 1 - } -\def\tkzApolloniusCenter{\pgfutil@ifnextchar[{\tkz@ApolloniusCenter}{\tkz@ApolloniusCenter[]}} -\def\tkz@ApolloniusCenter[#1](#2,#3){% -\begingroup - \pgfqkeys{/tkzapoc}{#1} - \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3) - \pgfnodealias{tkzSecondPointResult}{tkzPointResult} - \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} +} %<--------------------------------------------------------------------------–> \def\tkzDefOrthogonalCircle(#1,#2,#3){% \begingroup @@ -248,6 +208,8 @@ \pgfnodealias{tkz@PointResult}{tkzPointResult} \tkzCircumCenter(tkz@PointResult,#3,#4) \tkz@@CalcLengthcm(tkzPointResult,#3){tkzLengthResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \pgfnodealias{tkzSecondPointResult}{#3} \endgroup } %<--------------------------------------------------------------------------–> @@ -256,34 +218,14 @@ \def\tkzDefSpiekerCircle(#1,#2,#3){% \begingroup \tkzSpiekerCenter(#1,#2,#3) - \pgfnodealias{tkz@spka}{tkzPointResult} - \tkzDefMidPoint(#1,#2) - \tkzUProjection(#1,#2)(tkzPointResult) - \tkz@@CalcLength(tkz@spka,tkzPointResult){tkzLengthResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDefInversionCircle(#1,#2,#3,#4){% -\begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(#3,#4)(tkz@p1) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(#3,#4)(tkz@p2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzUProjection(tkz@m1,tkz@m2)(tkzPointResult) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkz@@CalcLength(tkzSecondPointResult,tkzFirstPointResult){tkzLengthResult} \endgroup } %<--------------------------------------------------------------------------–> -\def\tkzDefInversionNegativeCircle(#1,#2,#3,#4){% -\begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p1) - \tkzUCSym(\tkzcenter)(tkzPointResult) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p2) - \tkzUCSym(\tkzcenter)(tkzPointResult) - \pgfnodealias{tkzSecondPointResult}{tkzPointResult} -\endgroup -} + %<--------------------------------------------------------------------------–> % End Def Circle %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex index 37ab27d8e74..17c1be69b52 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-compass.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-compass.tex} \makeatletter %<--------------------------------------------------------------------------–> % Author Alain Matthes @@ -24,22 +24,23 @@ % Setup Compass %<--------------------------------------------------------------------------–> \pgfkeys{tkzsucompass/.cd, - line width/.store in = \tkz@compass@lw, - color/.store in = \tkz@compass@color, - style/.store in = \tkz@compass@style, - line width = \tkz@euc@compasswidth, - color = \tkz@euc@compasscolor, - style = \tkz@euc@compassstyle, - /tkzsucompass/.search also = {/tikz,/tkzcompass} + line width/.store in = \tkz@compass@lw, + color/.store in = \tkz@compass@color, + style/.store in = \tkz@compass@style, + line width = \tkz@euc@compasswidth, + color = \tkz@euc@compasscolor, + style = \tkz@euc@compassstyle, + /tkzsucompass/.search also = {/tikz,/tkzcompass} } %<--------------------------------------------------------------------------–> \def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkz@SetUpCompass}{\tkz@SetUpCompass[]}} %<--------------------------------------------------------------------------–> \def\tkz@SetUpCompass[#1]{% \pgfqkeys{/tkzsucompass}{#1} -\tikzset{compass style/.style={color = \tkz@compass@color, - line width = \tkz@compass@lw, - style = \tkz@compass@style +\tikzset{compass style/.style={% + color = \tkz@compass@color, + line width = \tkz@compass@lw, + style = \tkz@compass@style }} } %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex index a0fb399aeee..6234a361b37 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex @@ -10,20 +10,20 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tool-eu-angles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tool-eu-angles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzSetUpArc %<--------------------------------------------------------------------------–> \pgfkeys{/tkzsetuparc/.cd, - color/.store in = \tkz@arc@color, - line width/.store in = \tkz@arc@lw, - style/.store in = \tkz@arc@style, - line width = \tkz@euc@linewidth, - color = \tkz@euc@linecolor, - style = \tkz@euc@linestyle, + color/.store in = \tkz@arc@color, + line width/.store in = \tkz@arc@lw, + style/.store in = \tkz@arc@style, + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, /tkzsetuparc/.search also = {/tikz,/tkzcompass}, } \def\tkzSetUpArc{\pgfutil@ifnextchar[{\tkz@SetUpArc}{\tkz@SetUpArc[]}} @@ -34,16 +34,12 @@ style = \tkz@arc@style }} }% end setup -%<---------------------------------------------------------------------------> -\newdimen\tkz@arcsize% from julian julian@d-and-j.net -\newdimen\tkz@fillsize -%<--------------------------------------------------------------------------> - %<------------------------------ Arcs -------------------------------------– % options : delta % \def\tkz@delta{0} % \tikzset{arc style/.style={#1}} % \pgfkeys{/tikz/.cd,delta/.code={\def\tkz@delta{#1}}} +\newif\iftkz@reverse \gdef\tkz@numa{0} \pgfkeys{/tkzdrawarc/.cd, type/.is choice, @@ -67,6 +63,9 @@ type/.default = towards, delta/.store in = \tkz@delta, delta = 0, + reverse/.is if = tkz@reverse, + reverse/.default = true, + reverse = false, /tkzdrawarc/.search also = {/tikz} } \def\tkzDrawArc{\pgfutil@ifnextchar[{\tkz@DrawArc}{\tkz@DrawArc[]}} @@ -81,7 +80,7 @@ \tkzDrawArcAngles[#1](#2,#3)(#4) \or% 3 \tkzDrawArcRAngles[#1](#2,#3)(#4) - \or% 4 +\or% 4 \tkzDrawArcR[#1](#2,#3)(#4) \fi \endgroup @@ -167,29 +166,19 @@ \def\tkzDrawArcRAngles{\pgfutil@ifnextchar[{\tkz@DrawArcRAngles}{% \tkz@DrawArcRAngles[]}} \def\tkz@DrawArcRAngles[#1](#2,#3)(#4,#5){% - \begingroup - \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}% - \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}% - \pgfmathgreaterthan{\tkz@FirstAngle}{0} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@FirstAngle}{360} - \edef\tkz@FirstAngle{\pgfmathresult}% - \fi - \else - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathadd{\tkz@SecondAngle}{360} - \edef\tkz@SecondAngle{\pgfmathresult}% - \fi - \fi + \begingroup + \tkzNormalizeAngle(#4,#5) \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} \edef\tkz@SecondAngle{\pgfmathresult} - \draw[shift = {(#2)},arc style,/tkzdrawarc/.cd,#1]% - (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); + \iftkz@reverse + \let\tkztemp\tkz@FirstAngle + \let\tkz@FirstAngle\tkz@SecondAngle + \let\tkz@SecondAngle\tkztemp + \fi + \draw[shift = {(#2)},arc style,/tkzdrawarc/.cd,#1]% + (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); \endgroup } %<--------------------------------------------------------------------------–> @@ -212,22 +201,7 @@ \tkz@@CalcLength(#2,#3){tkz@radius} \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle} \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle} -\pgfmathparse{\tkz@FirstAngle}\edef\tkz@FirstAngle{\pgfmathresult}% -\pgfmathparse{\tkz@SecondAngle}\edef\tkz@SecondAngle{\pgfmathresult}% -\pgfmathgreaterthan{\tkz@FirstAngle}{0} -\ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@FirstAngle}{360} - \edef\tkz@FirstAngle{\pgfmathresult}% -\fi - \else - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathadd{\tkz@SecondAngle}{360} - \edef\tkz@SecondAngle{\pgfmathresult}% - \fi - \fi +\tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} @@ -246,22 +220,7 @@ \tkz@@CalcLength(#2,#3){tkz@radius} \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle} \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle} -\pgfmathparse{\tkz@FirstAngle}\edef\tkz@FirstAngle{\pgfmathresult}% -\pgfmathparse{\tkz@SecondAngle}\edef\tkz@SecondAngle{\pgfmathresult}% -\pgfmathgreaterthan{\tkz@FirstAngle}{0} -\ifdim\pgfmathresult pt=1 pt\relax% -\pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@FirstAngle}{360} - \edef\tkz@FirstAngle{\pgfmathresult}% - \fi -\else -\pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathadd{\tkz@SecondAngle}{360} - \edef\tkz@SecondAngle{\pgfmathresult}% - \fi -\fi +\tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} @@ -307,7 +266,7 @@ % dist ? % style : type de traits % position: 0.5 -% mark : none , |, ||,|||, z, s, x, o, oo mais tous les +% mark : none , , , , z, s, x, o, oo mais tous les % % symboles de tikz sont permis %<------------------------- Label on angle --------------------------------> \def\tkz@arcsimple{l} @@ -395,7 +354,21 @@ \endgroup } % fin de \tkzMarkAngle - +%<---------------------------------------------------------------------------> +% Pic Angle +%<---------------------------------------------------------------------------> +\def\tkzPicAngle{\pgfutil@ifnextchar[{\tkz@PicAngle}{\tkz@PicAngle[]}} +\def\tkz@PicAngle[#1](#2,#3,#4){% +\begingroup +\draw pic [#1]{angle=#2--#3--#4}; +\endgroup +} +\def\tkzPicRightAngle{\pgfutil@ifnextchar[{\tkz@PicRightAngle}{\tkz@PicRightAngle[]}} +\def\tkz@PicRightAngle[#1](#2,#3,#4){% +\begingroup +\draw pic [#1]{right angle=#2--#3--#4}; +\endgroup +} %<---------------------------------------------------------------------------> % FillAngle %<---------------------------------------------------------------------------> @@ -451,11 +424,12 @@ \pgfqkeys{/tkzlabelangle}{#1} \ifx\tkzutil@empty\tkzlabelangle% no value so calc angle of bisector \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} - \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} - \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo) - \edef\tkzlabelAngle{\fpeval{(\tkz@SecondAngle+\tkz@FirstAngle)/2}} + \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} + \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo) + \edef\tkzlabelAngle{\fpeval{(\tkz@SecondAngle+\tkz@FirstAngle)/2}} \fi - \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[label angle style,/tkzlabelangle/.cd,#1] {#5}; + \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[label angle style,% + /tkzlabelangle/.cd,#1] {#5}; \endgroup } %<---------------------------------------------------------------------------> @@ -546,6 +520,18 @@ \next#2 \@nil % \endgroup } - +%<---------------------------------------------------------------------------> +% tkzdefMidArc center and two points +\def\tkzDefMidArc(#1,#2,#3){% +\begingroup +\tkz@@CalcLength(#1,#2){tkz@radius} +\tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz@FirstAngle} +\tkzFindSlopeAngle(#1,#3)\tkzGetAngle{tkz@SecondAngle} +\tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) + \path[shift = {(#1)}](\tkz@FirstAngle:\tkz@radius pt) arc + (\tkz@FirstAngle:\tkz@SecondAngle:\tkz@radius pt) coordinate[midway] (tkzPointResult); +\endgroup +} + \makeatother \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex index fcc2a6fa9bc..5fd3356bc46 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex @@ -10,67 +10,48 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-draw-circles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-draw-circles.tex} \makeatletter - - -\def\tkz@numdc{0} -\pgfkeys{/tkzdrawc/.cd, - through/.code = \def\tkz@numdc{0}, - R/.code = \def\tkz@numdc{1}, - diameter/.code = \def\tkz@numdc{2}, - circum/.code = \def\tkz@numdc{3}, - in/.code = \def\tkz@numdc{4}, - ex/.code = \def\tkz@numdc{5}, - euler/.code = \def\tkz@numdc{6}, - nine/.code = \def\tkz@numdc{6}, - apollonius/.code = \def\tkz@numdc{7}, - orthogonal from/.code args = {#1}{\def\tkz@ptfrom{#1}, - \def\tkz@numdc{8}}, - orthogonal through/.code args = {#1 and #2}{\def\tkz@ptone{#1} - \def\tkz@pttwo{#2} - \def\tkz@numdc{9}}, - K/.store in = \tkz@koeff,% apollonius - through, - K = 1, - /tkzdrawc/.search also={/tikz} -} %<--------------------------------------------------------------------------–> +% tkzSetUpCircle %<--------------------------------------------------------------------------–> -% Drawing a circle > -%<--------------------------------------------------------------------------–> +\pgfkeys{% + /tkzsetupcirc/.cd, + color/.code = \def\tkz@circle@color{#1}, + line width/.code = \def\tkz@circle@linewidth{#1}, + style/.code = \def\tkz@circle@style{#1}, + /tkzsetupcirc/.search also = {/tikz} + } + %<--------------------------------------------------------------------------–> + +\def\tkzSetUpCircle{\pgfutil@ifnextchar[{\tkz@SetUpCircle}{\tkz@SetUpCircle[]}} +\def\tkz@SetUpCircle[#1]{% +\pgfkeys{% + tkzsetupcirc/.cd, + line width = \tkz@euc@circlelw, + color = \tkz@euc@circlecolor, + style = \tkz@euc@circlestyle +} +\pgfqkeys{/tkzsetupcirc}{#1} +\tikzset{% + circle style/.append style = { % + color = \tkz@circle@color, + line width = \tkz@circle@linewidth, + style = \tkz@circle@style, + #1} + } +}% end setup + %<--------------------------------------------------------------------------–> + \def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}} -\def\tkz@DrawCircle[#1](#2){% +\def\tkz@DrawCircle[#1](#2,#3){% \begingroup -\pgfqkeys{/tkzdrawc}{#1} -\ifcase\tkz@numdc% - \tkzDefCircleThrough(#2) - \or% 1 - \tkzDefCircleR(#2) - \or% 2 - \tkzDefCircleD(#2) - \or% 3 - \tkzDefCircumCircle(#2) - \or% 4 - \tkzDefInCircle(#2) - \or% 4 - \tkzDefExCircle(#2) - \or% 5 - \tkzDefEulerCircle(#2) - \or% 6 - \tkzDefApolloniusCircle(#2) - \or% 7 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 8 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) - \fi - \draw[line style,/tkzdrawc/.cd,#1] (tkzPointResult) circle (\tkzLengthResult); +\node [draw,circle through=(#3), circle style,#1] at (#2) {}; \endgroup } - -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> \def\tkz@multicircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzDrawCircle[\tkz@optcircle](#1)}\tkz@temp% @@ -79,7 +60,7 @@ \let\next\@gobble \fi \next#2\@nil -} +}% %<--------------------------------------------------------------------------–> \def\tkzDrawCircles{\pgfutil@ifnextchar[{\tkz@DrawCircles}{\tkz@DrawCircles[]}} \def\tkz@DrawCircles[#1](#2){% @@ -90,58 +71,31 @@ \endgroup }% %<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> % #2 #3 rayon -\def\tkz@numdsc{0} \pgfkeys{/tkzdrawsc/.cd, - through/.code = \def\tkz@numdsc{0}, - diameter/.code = \def\tkz@numdsc{1}, swap/.is if = tkz@swap@sc, swap/.default = true, swap = false, - through, - /tkzdrawsc/.search also={/tikz} - } +/tkzdrawsc/.search also={/tikz} +} \def\tkzDrawSemiCircle{\pgfutil@ifnextchar[{\tkz@DrawSemiCircle}{% - \tkz@DrawSemiCircle[]}} -\def\tkz@DrawSemiCircle[#1](#2){% + \tkz@DrawSemiCircle[]}} +\def\tkz@DrawSemiCircle[#1](#2,#3){% \begingroup -\pgfqkeys{/tkzdrawsc}{#1} -\ifcase\tkz@numdsc% - \tkzDrawSemiCircleThrough(#2) -\or% - \tkzDrawSemiCircleDiameter(#2) +\pgfqkeys{/tkzdrawsc}{#1} + \tkzDefPointBy[symmetry=center #2](#3) + \pgfnodealias{tkz@pt}{tkzPointResult} + \iftkz@swap@sc + \gdef\tkz@FirstPoint{tkz@pt} + \gdef\tkz@SecondPoint{#3} + \else + \gdef\tkz@FirstPoint{#3} + \gdef\tkz@SecondPoint{tkz@pt} \fi - \tkzDrawArc[#1,delta=0](\tkz@Center,\tkz@FirstPoint)(\tkz@SecondPoint) + \tkzDrawArc[#1,delta=0](#2,\tkz@FirstPoint)(\tkz@SecondPoint) \endgroup -} +}% %<--------------------------------------------------------------------------–> -\def\tkzDrawSemiCircleThrough(#1,#2){% - \tkzDefPointBy[symmetry=center #1](#2) - \pgfnodealias{tkz@pt}{tkzPointResult} - \def\tkz@Center{#1} - \iftkz@swap@sc - \gdef\tkz@FirstPoint{tkz@pt} - \gdef\tkz@SecondPoint{#2} - \else - \gdef\tkz@FirstPoint{#2} - \gdef\tkz@SecondPoint{tkz@pt} - \fi -} -%<--------------------------------------------------------------------------–> -\def\tkzDrawSemiCircleDiameter(#1,#2){% - \tkzDefMidPoint(#1,#2) - \pgfnodealias{tkz@Center}{tkzPointResult} - \def\tkz@Center{tkz@Center} - \iftkz@swap@sc - \def\tkz@FirstPoint{#1} - \def\tkz@SecondPoint{#2} - \else - \def\tkz@FirstPoint{#2} - \def\tkz@SecondPoint{#1} - \fi -} -%<--------------------------------------------------------------------------–> \def\tkz@multisemicircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzDrawSemiCircle[\tkz@optsemicircle](#1)}\tkz@temp% @@ -150,11 +104,10 @@ \let\next\@gobble \fi \next#2\@nil -} -%<--------------------------------------------------------------------------–> +}% %<--------------------------------------------------------------------------–> \def\tkzDrawSemiCircles{\pgfutil@ifnextchar[{\tkz@DrawSemiCircles}{% - \tkz@DrawSemiCircles[]}} +\tkz@DrawSemiCircles[]}} \def\tkz@DrawSemiCircles[#1](#2){% \xdef\tkz@optsemicircle{#1} \begingroup @@ -162,84 +115,57 @@ \next#2 \@nil % \endgroup }% -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> %<---------------------------- Fill Circle --------------------------------–> -\def\tkz@numfc{0} -\pgfkeys{/fillcircle/.cd, radius/.code = \def\tkz@numfc{0}, - R/.code = \def\tkz@numfc{1}, - radius, - /fillcircle/.search also={/tikz} -} \def\tkzFillCircle{\pgfutil@ifnextchar[{\tkz@FillCircle}{\tkz@FillCircle[]}} \def\tkz@FillCircle[#1](#2,#3){% \begingroup -\pgfqkeys{/fillcircle}{#1} -\ifcase\tkz@numfc% - % first case 0 - \tkz@@CalcLength(#2,#3){tkzLengthResult} - \fill[/fillcircle/.cd,#1] (#2) circle (\tkzLengthResult pt);% - \or% 1 - \fill[/fillcircle/.cd,#1] (#2) circle (#3);% - \fi + \node [fill,circle through=(#3),#1] at (#2) {}; \endgroup -} +}% +\def\tkz@multifillcircles#1 #2\@nil{% +\protected@edef\tkz@temp{ +\noexpand \tkzFillCircle[\tkz@optfillcircle](#1)}\tkz@temp% +\def\tkz@nextArg{#2}% +\ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble +\fi +\next#2\@nil +}% +\def\tkzFillCircles{\pgfutil@ifnextchar[{\tkz@FillCircles}{% +\tkz@FillCircles[]}} +\def\tkz@FillCircles[#1](#2){% +\xdef\tkz@optfillcircle{#1} +\begingroup + \let\next\tkz@multifillcircles + \next#2 \@nil % +\endgroup +}% %<--------------------------- Clip Circle ---------------------------------–> -\def\tkz@numcc{0} \pgfkeys{/tkzclipc/.cd, - through/.code = \def\tkz@numcoc{0}, - R/.code = \def\tkz@numcoc{1}, out code/.is if = tkzClipOutCircle, - out/.code = \tkzClipOutCirclefalse, - through} + out/.code = \tkzClipOutCirclefalse +}% %<--------------------------------------------------------------------------–> \def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{\tkz@ClipCircle[]}} - \def\tkz@ClipCircle[#1](#2,#3){% \tkzClipOutCircletrue \pgfqkeys{/tkzclipc}{#1} -\ifcase\tkz@numcoc \tkz@@CalcLength(#2,#3){tkzLengthResult} \iftkzClipOutCircle - \clip (#2) circle (\tkzLengthResult pt); + \clip (#2) circle (\tkzLengthResult pt); \else - \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ; + \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ; \fi - \or% 1 - \iftkzClipOutCircle - \clip (#2) circle (#3); - \else - \clip (#2) circle (#3) [tkzreverseclip] ; - \fi - \fi } %<--------------------------- Label Circle --------------------------------–> -% attention radius circle is defined by center and a point on the circle -% R defined by center and the value of the radius -\def\tkz@numlc{0} -\pgfkeys{/tkzlabelc/.cd, - through/.code = \def\tkz@numlc{0}, - R/.code = \def\tkz@numlc{1}, - through, - /tkzlabelc/.search also={/tikz} -} - \def\tkzLabelCircle{\pgfutil@ifnextchar[{\tkz@LabelCircle}{% \tkz@LabelCircle[]}} -% [option] (#2,#3) #2 center #3 soit un point du cercle soit le radius -% #4 angle #5 the label +% [option] (#2,#3) #2 center #3 un point du cercle #4 angle #5 the label \def\tkz@LabelCircle[#1](#2,#3)(#4)#5{% \begingroup -\pgfqkeys{/tkzlabelc}{#1} -\ifcase\tkz@numlc \tkzURotateAngle(#2,#4)(#3) - \node[/tkzlabelc/.cd,#1] at (tkzPointResult) {#5}; -\or% 1 - \path (#2)--++(#3,0) coordinate (tkzPointResult); - \tkzURotateAngle(#2,#4)(tkzPointResult) - \node[/tkzlabelc/.cd,#1] at (tkzPointResult) {#5}; -\fi + \node[label style,#1] at (tkzPointResult) {#5}; \endgroup } \makeatother diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex index 77dbe4f889d..a415218816e 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex @@ -10,22 +10,54 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-draw-lines.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-draw-lines.tex} \makeatletter -\def\tkz@numdl{0} -\pgfkeys{/tkzdrawl/.cd, - /tkzdrawl/.search also={/tikz} +%<--------------------------------------------------------------------------–> +% Setup Line +%<--------------------------------------------------------------------------–> +\pgfkeys{% + tkzsuline/.cd, + line width/.code = \def\tkz@line@width{#1}, + color/.code = \def\tkz@line@color{#1}, + style/.code = \def\tkz@line@style{#1}, + add/.code args = {#1 and #2} {\def\tkz@line@left{#1} + \def\tkz@line@right{#2}}, + /tkzsuline/.search also = {/tikz} } %<--------------------------------------------------------------------------–> +\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkz@SetUpLine}{\tkz@SetUpLine[]}} +\def\tkz@SetUpLine[#1]{% +\pgfkeys{% + tkzsuline/.cd, + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, + add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} +\pgfqkeys{/tkzsuline}{#1} +\tikzset{% + line style/.append style ={% + line width = \tkz@line@width, + color = \tkz@line@color, + style = \tkz@line@style, + add = {\tkz@line@left} and {\tkz@line@right}, + line cap = round, + #1} + } +}% end setup +%<--------------------------------------------------------------------------–> % Drawing a line %<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% \pgfkeys{/tkzdrawl/.cd, +% /tkzdrawl/.search also={/tikz} +% } \def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{\tkz@DrawLine[]}} \def\tkz@DrawLine[#1](#2,#3){% \begingroup -\pgfqkeys{/tkzdrawl}{#1} + % \pgfqkeys{/tkzdrawl}{#1} \draw[line style,#1] (#2) to (#3); \endgroup } @@ -56,39 +88,7 @@ \def\tkzLabelLine{\pgfutil@ifnextchar[{\tkz@AddLabelLine}{\tkz@AddLabelLine[]}} \def\tkz@AddLabelLine[#1](#2,#3)#4{\path (#2) to node[#1]{#4}(#3);} -%<--------------------------------------------------------------------------–> -% Setup Line -%<--------------------------------------------------------------------------–> -\pgfkeys{% - tkzsuline/.cd, - line width/.code = \def\tkz@line@lw{#1}, - color/.code = \def\tkz@line@color{#1}, - style/.code = \def\tkz@line@style{#1}, - add/.code args = {#1 and #2} {\def\tkz@line@left{#1} - \def\tkz@line@right{#2}}, - /tkzsuline/.search also={/tikz}% -} -%<--------------------------------------------------------------------------–> -\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkz@SetUpLine}{% remove tkzActivOff 3.03 - \tkz@SetUpLine[]}} -\def\tkz@SetUpLine[#1]{% -\pgfkeys{% - tkzsuline/.cd, - line width = \tkz@euc@linewidth, - color = \tkz@euc@linecolor, - style = \tkz@euc@linestyle, - add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} -\pgfqkeys{/tkzsuline}{#1} -%<--------------------------------------------------------------------------–> -% Line style -%<--------------------------------------------------------------------------–> -\tikzset{% - line style/.style ={% - color = \tkz@line@color, - line width = \tkz@line@lw, - style = \tkz@line@style, - add = {\tkz@line@left} and {\tkz@line@right} -}}}% end setup + %<--------------------------------------------------------------------------–> % draw segment (s) %<--------------------------------------------------------------------------–> @@ -134,7 +134,7 @@ size = 4pt, color = \tkz@mk@color, pos = .5, - mark = |, + mark = , /@tkzmarkoptions/.search also={/tikz}, } \def\tkzMarkSegment{\pgfutil@ifnextchar[{\tkz@MarkSegment}{\tkz@MarkSegment[]}} @@ -175,7 +175,7 @@ {\tkz@LabelSegment[]}} \def\tkz@LabelSegment[#1](#2,#3)#4{% \begingroup - \path (#2) to node[label seg style,#1]{#4} (#3) ; + \path (#2) to node[label style,#1]{#4} (#3) ; \endgroup } %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex new file mode 100644 index 00000000000..ee9d5bbbc76 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex @@ -0,0 +1,172 @@ + % tkz-obj-eu-points.tex +% Copyright 2022 Alain Matthes +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% This work has the LPPL maintenance status “maintained”. +% The Current Maintainer of this work is Alain Matthes. + +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points.tex} +\makeatletter +%<---------------------------------------------------------------------------> +% tkzSetUpPoint définit la forme d'un point +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzsetuppt/.cd, + size/.store in = \tkz@pt@size, + color/.store in = \tkz@pt@color, + fill/.store in = \tkz@pt@fill, + shape/.store in = \tkz@pt@shape, + size = \tkz@euc@pointsize, + color = \tkz@euc@pointcolor, + fill = \tkz@euc@pointcolor, + shape = \tkz@euc@pointshape, + /tkzsetuppt/.search also = {/tikz}, + } +\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% + \tkz@SetUpPoint[]}} +\def\tkz@SetUpPoint[#1]{% +\pgfqkeys{/tkzsetuppt}{#1} +% redefine point style with new values +\tikzset{point style/.style={draw = \tkz@pt@color, + inner sep = 0pt, + shape = \tkz@pt@shape, + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill}} +}% end setup +%<---------------------------------------------------------------------------> +% Draw Point +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzdrawpt/.cd, + size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, + size = \tkz@euc@pointsize, + /tkzdrawpt/.search also = {/tikz}, +} +%<-------------------------------------------------------------------------- +\def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} +\def\tkz@DrawPoint[#1](#2){% +\begingroup + \pgfqkeys{/tkzdrawpt}{#1} + \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016 +\endgroup +} +%<---------------------------------------------------------------------------> +\def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} +%<---------------------------------------------------------------------------> +\def\tkz@drawpts[#1](#2){% +\begingroup + \pgfqkeys{/tkzdrawpt}{#1} + \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016 +\endgroup +} +%<--------------------------------------------------------------------------> +% tkzLabelPoint Affichage des LABELS pour un point +%<--------------------------------------------------------------------------> +\def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}} +\def\tkz@LabelPoint[#1](#2)#3{% + \node[label style,#1] at (#2) {#3};}% +%<---------------------------------------------------------------------------> + +\def\tkzLabelPoints{\pgfutil@ifnextchar[{\tkz@LabelPoints}{\tkz@LabelPoints[]}}% +\def\tkz@LabelPoints[#1](#2){% + \foreach \point in {#2}{ + \node[label style,#1] at (\point) {$\point$};} +}% +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzsetuppt/.cd, + size/.store in = \tkz@pt@size, + color/.store in = \tkz@pt@color, + fill/.store in = \tkz@pt@fill, + shape/.store in = \tkz@pt@shape, + size = \tkz@euc@pointsize, + color = \tkz@euc@pointcolor, + fill = \tkz@euc@pointcolor, + shape = \tkz@euc@pointshape, + /tkzsetuppt/.search also = {/tikz}, + } +\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% + \tkz@SetUpPoint[]}} +\def\tkz@SetUpPoint[#1]{% +\pgfqkeys{/tkzsetuppt}{#1} +% redefine point style with new values +\tikzset{point style/.style={draw = \tkz@pt@color, + inner sep = 0pt, + shape = \tkz@pt@shape, + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill}} +}% end setup +%<---------------------------------------------------------------------------> +% +%<---------------------------------------------------------------------------> +\def\tkzSetUpLabel{\pgfutil@ifnextchar[{\tkz@SetUpLabel}{% + \tkz@SetUpLabel[]}} +\def\tkz@SetUpLabel[#1]{% +\tikzset{label style/.style={#1}} +}% end setup +%<---------------------------------------------------------------------------> + +\pgfkeys{/tkzautolab/.cd, + center/.store in = \tkz@center, + dist/.store in = \tkz@dist, + dist = 0.15, + /tkzautolab/.search also = {/tikz}, +} +\def\tkzAutoLabelPoints{\pgfutil@ifnextchar[{\tkz@AutoLabelPoints}{\tkz@AutoLabelPoints[]}}% +\def\tkz@AutoLabelPoints[#1](#2){% +\begingroup +\pgfqkeys{/tkzautolab}{#1} + \foreach \point in {#2}{ + \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/tkzautolab/.cd,label style,#1]{$\point$};} +\endgroup +}% +%<---------------------------------------------------------------------------> +% PointShowCoord +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzprcoord/.cd, + xlabel/.store in = \tkz@xlabel, + ylabel/.store in = \tkz@ylabel, + xstyle/.code = {\tikzset{xcoord style/.append style={#1}}}, + ystyle/.code = {\tikzset{ycoord style/.append style={#1}}}, + noxdraw/.is if = tkz@coord@noxdraw, + noxdraw/.default = true, + noydraw/.is if = tkz@coord@noydraw, + noydraw/.default = true, + xlabel = {}, + ylabel = {}, + xstyle = {}, + ystyle = {}, + noxdraw = false, + noydraw = false, + /tkzprcoord/.search also = {/tikz}, +} +\def\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{\tkz@PointShowCoord[]}} +\def\tkz@PointShowCoord[#1](#2){% +\begingroup +\pgfqkeys{/tkzprcoord}{#1} +% 2019 for showcoord + \iftkznodedefined{tkz@xline}{}{% + \path (0,0) --(1,0) node(tkz@xline){}; + \path (0,0) --(0,1) node(tkz@yline){}; + } +\iftkz@coord@noxdraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 - tkz@xline);\fi +\iftkz@coord@noydraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 - tkz@yline);\fi +\ifx\tkzutil@empty\tkz@xlabel +\else +\path (#2)--(#2 - tkz@xline) + node[xcoord style] {\tkz@xlabel}; +\fi +\ifx\tkzutil@empty\tkz@ylabel +\else + \path (#2)--(#2 - tkz@yline) + node[ycoord style] {\tkz@ylabel}; +\fi +\endgroup +} +\let\tkzShowPointCoord\tkzPointShowCoord +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex index ebf53e42f16..b7e1b1faa03 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-polygons.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-polygons.tex} \makeatletter %<--------------------------------------------------------------------------–> % Polygon @@ -61,33 +61,33 @@ \endgroup } %<--------------------------------------------------------------------------–> -\def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{\tkz@DrawSquare[]}} -\def\tkz@DrawSquare[#1](#2,#3){% -\begingroup - \tkzDefSquare(#2,#3) - \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDrawRectangle{\pgfutil@ifnextchar[{\tkz@DrawRectangle}% - {\tkz@DrawRectangle[]}} -\def\tkz@DrawRectangle[#1](#2,#3){% -\begingroup - \draw[line join=round,#1](#2) -| (#3) -| (#2); -\endgroup -} + % \def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{\tkz@DrawSquare[]}} + % \def\tkz@DrawSquare[#1](#2,#3){% + % \begingroup + % \tkzDefSquare(#2,#3) + % \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) + % \endgroup + % } + %<--------------------------------------------------------------------------–> + % \def\tkzDrawRectangle{\pgfutil@ifnextchar[{\tkz@DrawRectangle}% + % {\tkz@DrawRectangle[]}} + % \def\tkz@DrawRectangle[#1](#2,#3){% + % \begingroup + % \draw[line join=round,#1](#2) - (#3) - (#2); + % \endgroup + % } %<-------------------------- gold rectangle -------------------------------–> % %<--------------------------------------------------------------------------–> -\def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{% - \tkz@DrawGoldRectangle[]}} -\def\tkz@DrawGoldRectangle[#1](#2,#3){ -\begingroup - \tkzDefGoldRectangle(#2,#3) - \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} -\let\tkzDrawGoldenRectangle\tkzDrawGoldRectangle + % \def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{% + % \tkz@DrawGoldRectangle[]}} + % \def\tkz@DrawGoldRectangle[#1](#2,#3){ + % \begingroup + % \tkzDefGoldRectangle(#2,#3) + % \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) + % \endgroup + % } + % \let\tkzDrawGoldenRectangle\tkzDrawGoldRectangle %<-------------- Labels for Regular Polygon -------------------------–> % %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-triangles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-triangles.tex index 113326de891..7e9cf513c8d 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-triangles.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-triangles.tex @@ -10,68 +10,46 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-draw-triangles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-draw-triangles.tex} \makeatletter %<--------------------------------------------------------------------------–> % Draw Triangles %<--------------------------------------------------------------------------–> -\def\tkz@numdtr{0} -\pgfkeys{/drawtriangle/.cd, - equilateral/.code = {\def\tkz@numdtr{0}}, - half/.code = {\def\tkz@numdtr{1}}, - pythagore/.code = {\def\tkz@numdtr{2}}, - pythagoras/.code = {\def\tkz@numdtr{2}}, - egyptian/.code = {\def\tkz@numdtr{2}}, - school/.code = {\def\tkz@numdtr{3}}, - golden/.code = {\def\tkz@numdtr{4}}, - sublime/.code = {\def\tkz@numdtr{4}}, - euclid/.code = {\def\tkz@numdtr{5}}, - gold/.code = {\def\tkz@numdtr{6}}, - cheops/.code = {\def\tkz@numdtr{7}}, - two angles/.code args = {#1 and #2}{\def\tkz@numdtr{8}% - \def\tkz@alpha{#1}% - \def\tkz@beta{#2}}, - isosceles right/.code = {\def\tkz@numdtr{9}}, - equilateral, - /drawtriangle/.search also={/tikz} -} +% \def\tkz@numdtr{0} +% \pgfkeys{/drawtriangle/.cd, +% equilateral/.code = {\def\tkz@numdtr{0}}, +% half/.code = {\def\tkz@numdtr{1}}, +% pythagore/.code = {\def\tkz@numdtr{2}}, +% pythagoras/.code = {\def\tkz@numdtr{2}}, +% egyptian/.code = {\def\tkz@numdtr{2}}, +% school/.code = {\def\tkz@numdtr{3}}, +% golden/.code = {\def\tkz@numdtr{4}}, +% sublime/.code = {\def\tkz@numdtr{4}}, +% euclid/.code = {\def\tkz@numdtr{5}}, +% gold/.code = {\def\tkz@numdtr{6}}, +% cheops/.code = {\def\tkz@numdtr{7}}, +% two angles/.code args = {#1 and #2}{\def\tkz@numdtr{8}% +% \def\tkz@alpha{#1}% +% \def\tkz@beta{#2}}, +% isosceles right/.code = {\def\tkz@numdtr{9}}, +% equilateral, +% /drawtriangle/.search also={/tikz} +% } \def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{% \tkz@DrawTriangle[]}} -\def\tkz@DrawTriangle[#1](#2,#3){% +\def\tkz@DrawTriangle[#1](#2,#3,#4){% \begingroup -\pgfkeys{/drawtriangle/.cd,equilateral} -\pgfqkeys{/drawtriangle}{#1} -\ifcase\tkz@numdtr% - \tkzDefEquilateral(#2,#3) -\or% 1 - \tkzDefTwoOne(#2,#3) -\or% 2 - \tkzDefPythagore(#2,#3) -\or% 3 - \tkzDefSchoolTriangle(#2,#3) -\or% 4 - \tkzDefGoldenTriangle(#2,#3) -\or% 5 - \tkzDefEuclideTriangle(#2,#3) -\or% 6 - \tkzDefGoldTriangle(#2,#3) -\or% 7 - \tkzDefCheopsTriangle(#2,#3) -\or% 8 - \tkzDefTwoAnglesTriangle(#2,#3) - \or% 9 - \tkzDefIsoscelesRightTriangle(#2,#3) -\fi - \draw[/drawtriangle/.cd,line style,line join=round,#1] (#2)--(#3)--(tkzPointResult)--cycle; +\draw[line style,line join=round,#1] (#2)--(#3)--(#4)--cycle; \endgroup } %<--------------------------------------------------------------------------–> \def\tkz@multitriangles#1 #2\@nil{% \protected@edef\tkz@temp{ +%\noexpand \tkzDrawTriangle[\tkz@opttrianle](#1)}\tkz@temp% \noexpand \tkzDrawPolygon[\tkz@opttrianle](#1)}\tkz@temp% \def\tkz@nextArg{#2}% \ifx\tkzutil@empty\tkz@nextArg diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex index 4e9fecae252..44f898faca8 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-grids.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-grids.tex} \makeatletter %<--------------------------------------------------------------------------–> % Setup Grid diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex index 9dce18f48e7..b07f40bc101 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex @@ -10,29 +10,29 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-lines.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-lines.tex} \makeatletter %<--------------------------------------------------------------------------–> % les lignes %<--------------------------------------------------------------------------–> -\def\tkz@numl{0} -\pgfkeys{/tkzDefLine/.cd, - mediator/.code = \def\tkz@numl{0}, - perpendicular/.code args = {through #1} {\def\tkz@numl{1}% +\def\tkz@numline{0} +\pgfkeys{/tkzdefline/.cd, + mediator/.code = \def\tkz@numline{0}, + perpendicular/.code args = {through #1} {\def\tkz@numline{1}% \def\tkz@through{#1}}, - orthogonal/.code args = {through #1} {\def\tkz@numl{1}% + orthogonal/.code args = {through #1} {\def\tkz@numline{1}% \def\tkz@through{#1}}, - parallel/.code args = {through #1}{\def\tkz@numl{2}% + parallel/.code args = {through #1}{\def\tkz@numline{2}% \def\tkz@through{#1}}, - bisector/.code = \def\tkz@numl{3}, - bisector out/.code = \def\tkz@numl{4}, - symmedian/.code = \def\tkz@numl{5}, - tangent at/.code = {#1}{\def\tkz@numl{6} \def\tkz@ptat{#1}}, - tangent from/.code = {#1}{\def\tkz@numl{7} \def\tkz@ptfrom{#1}}, - median/.code = \def\tkz@numl{8}, - altitude/.code = \def\tkz@numl{9}, + bisector/.code = \def\tkz@numline{3}, + bisector out/.code = \def\tkz@numline{4}, + symmedian/.code = \def\tkz@numline{5}, + altitude/.code = \def\tkz@numline{6}, + euler/.code = \def\tkz@numline{7}, + tangent from/.code = \def\tkz@numline{8} \def\tkz@ptfrom{#1}, + tangent at/.code = \def\tkz@numline{9} \def\tkz@ptat{#1}, K/.code = \def\tkz@koeff{#1}, K = 1, normed/.is if = tkz@line@normed, @@ -43,9 +43,9 @@ \def\tkzDefLine{\pgfutil@ifnextchar[{\tkz@DefLine}{\tkz@DefLine[]}} \def\tkz@DefLine[#1](#2){% \begingroup -\pgfkeys{/tkzDefLine/.cd,K=1} -\pgfqkeys{/tkzDefLine}{#1} -\ifcase\tkz@numl% +%\pgfkeys{/tkzdefline/.cd,K=1} +\pgfqkeys{/tkzdefline}{#1} +\ifcase\tkz@numline% % first case 0 \tkzDefMediatorLine(#2) \or% 1 @@ -58,10 +58,14 @@ \tkzDefBisectorOutLine(#2) \or% 5 \tkzDefSymmedianLine(#2) - \or% 6 - \tkzTgtAt(#1)(#2) + \or% 6 + \tkzDefAltitudeLine(#2) \or% 7 - \tkzTgtFromP(#1)(#2) + \tkzDefEulerLine(#2) + \or% 8 + \tkzTgtFromP(#2)(\tkz@ptfrom) + \or% 9 + \tkzTgtAt(#2)(\tkz@ptat) \fi \endgroup } @@ -194,6 +198,32 @@ \endgroup } %<--------------------------------------------------------------------------–> +% Altitude Line +%<--------------------------------------------------------------------------–> +\def\tkzDefAltitudeLine(#1,#2,#3){% +\begingroup + \pgfinterruptboundingbox + \tkzUProjection(#1,#3)(#2) + \pgfnodealias{ort@pta}{tkzPointResult} + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +% Euler Line +%<--------------------------------------------------------------------------–> +\def\tkzDefEulerLine(#1,#2,#3){% +\begingroup + \pgfinterruptboundingbox + \tkzOrthoCenter(#1,#2,#3) + \pgfnodealias{euler@pt1}{tkzPointResult} + \tkzEulerCenter(#1,#2,#3) + \pgfnodealias{euler@pt2}{tkzPointResult} + \pgfnodealias{tkzSecondPointResult}{euler@pt2} + \pgfnodealias{tkzFirstPointResult}{euler@pt1} + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> % tangente à cercle passant par un point donné %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex index 596ee3a0bcf..699bd8bc37b 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-el-points-by.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-points-by.tex} \makeatletter %<--------------------------------------------------------------------------–> % Transformations Géométriques @@ -426,6 +426,10 @@ \tkzVecKNorm[\tkz@lnc](#1,#3) \endgroup } +% possible +% \tkzDefLine[tangent from =#3](#1,#2) +% \tkzTgtFromP(#1,#2)(#3) +% \tkzInterLL(tkzFirstPointResult,tkzSecondPointResult)(#1,#2) %<--------------------------------------------------------------------------–> % Inverse negative of a point %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex index 06e792f6fdc..b837215d48a 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-el-points-rnd.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points-rnd.tex} %<--------------------------------------------------------------------------–> \makeatletter %<-------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex index a67b375cd0d..7b4f9966bb5 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-el-points.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points.tex} \makeatletter %add ExCenter %<--------------------------------------------------------------------------–> @@ -121,15 +121,15 @@ \begingroup \pgfqkeys{/tkzSimilitudeCenter}{#1} \ifcase\tkz@numhomo% - \tkzCalcLength(#2,#3) - \tkzGetLength{tkz@rt} - \tkzCalcLength(#4,#5) - \tkzGetLength{tkz@rf} + \tkz@@CalcLengthcm(#2,#3){tkz@rt}% + \tkz@@CalcLengthcm(#4,#5){tkz@rf}% \or% 1 - \def\tkz@rt{#3} - \def\tkz@rf{#5} + \def\tkz@rt{#3}% + \def\tkz@rf{#5}% \fi +\pgfinterruptboundingbox \path[coordinate](barycentric cs:#2=\tkz@rf,#4=\tkz@rt)coordinate (tkzPointResult); + \endpgfinterruptboundingbox \endgroup } \let\tkzDefIntHomotheticCenter\tkzDefIntSimilitudeCenter @@ -142,15 +142,15 @@ \begingroup \pgfqkeys{/tkzSimilitudeCenter}{#1} \ifcase\tkz@numhomo% - \tkzCalcLength(#2,#3) - \tkzGetLength{tkz@rt} - \tkzCalcLength(#4,#5) - \tkzGetLength{tkz@rf} + \tkz@@CalcLengthcm(#2,#3){tkz@rt}% + \tkz@@CalcLengthcm(#4,#5){tkz@rf}% \or% 1 - \def\tkz@rt{#3} - \def\tkz@rf{#5} + \def\tkz@rt{#3}% + \def\tkz@rf{#5}% \fi + \pgfinterruptboundingbox \path[coordinate](barycentric cs:#2=-\tkz@rf,#4=\tkz@rt) coordinate(tkzPointResult); + \endpgfinterruptboundingbox \endgroup } @@ -184,17 +184,25 @@ \def\tkzDefDivHarmonicExt(#1,#2,#3){% \begingroup - \tkz@@CalcLengthcm(#3,#1){tkz@da} - \tkz@@CalcLengthcm(#3,#2){tkz@db} - \path[coordinate] (barycentric cs:#1={-\tkz@db},#2={\tkz@da}) coordinate (tkzPointResult); +\pgfinterruptboundingbox + \tkz@VecKOrth[](#1,#2) \tkzGetPoint{tkz@px} + \tkzDefMidPoint(tkz@px,#2) \tkzGetPoint{tkz@py} + \tkzInterLL(tkz@px,#3)(#1,tkz@py) \tkzGetPoint{tkz@pz} + \tkzInterLL(#2,tkz@pz)(#1,tkz@px) \tkzGetPoint{tkz@px} + \tkzInterLL(tkz@py,tkz@px)(#1,#2) \tkzGetPoint{tkzPointResult} +\endpgfinterruptboundingbox \endgroup } \def\tkzDefDivHarmonicInt(#1,#2,#3){% \begingroup - \tkz@@CalcLengthcm(#3,#1){tkz@da} - \tkz@@CalcLengthcm(#3,#2){tkz@db} - \path[coordinate] (barycentric cs:#1={\tkz@db},#2={\tkz@da}) coordinate (tkzPointResult); +\pgfinterruptboundingbox + \tkz@VecKOrth[1](#1,#2) \tkzGetPoint{tkz@px} + \tkzDefMidPoint(tkz@px,#2) \tkzGetPoint{tkz@py} + \tkzInterLL(tkz@py,#3)(#1,tkz@px) \tkzGetPoint{tkz@pz} + \tkzInterLL(#2,tkz@pz)(#1,tkz@py) \tkzGetPoint{tkz@py} + \tkzInterLL(tkz@py,tkz@px)(#1,#2) \tkzGetPoint{tkzPointResult} +\endpgfinterruptboundingbox \endgroup } @@ -273,7 +281,7 @@ %<--------------------------------------------------------------------------–> % OrthoCenter %<--------------------------------------------------------------------------–> -\def\tkzOrthoCenter(#1,#2,#3){% H orthocentre +\def\tkzOrthoCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox \tkzUProjection(#1,#2)(#3) @@ -332,7 +340,7 @@ \pgf@process{\pgfpointanchor{tkzSecondPointResult}{center}}% \tkz@dx\pgf@x% \tkz@dy\pgf@y% - \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% +\tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% \endpgfinterruptboundingbox \endgroup } @@ -343,23 +351,22 @@ \def\tkzInCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzDefBisectorLine(#3,#1,#2) - \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% - \tkz@bx\pgf@x% - \tkz@by\pgf@y% - \tkzDefBisectorLine(#3,#2,#1) - \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% - \tkz@dx\pgf@x% - \tkz@dy\pgf@y% - \pgf@process{\pgfpointanchor{#1}{center}}% - \tkz@ax\pgf@x% - \tkz@ay\pgf@y% - \pgf@process{\pgfpointanchor{#2}{center}}% - \tkz@cx\pgf@x% - \tkz@cy\pgf@y% - \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)% - (\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% - \endpgfinterruptboundingbox +\tkzDefBisectorLine(#3,#1,#2) +\pgf@process{\pgfpointanchor{tkzPointResult}{center}}% +\tkz@bx\pgf@x% +\tkz@by\pgf@y% +\tkzDefBisectorLine(#3,#2,#1) +\pgf@process{\pgfpointanchor{tkzPointResult}{center}}% +\tkz@dx\pgf@x% +\tkz@dy\pgf@y% +\pgf@process{\pgfpointanchor{#1}{center}}% +\tkz@ax\pgf@x% +\tkz@ay\pgf@y% +\pgf@process{\pgfpointanchor{#2}{center}}% +\tkz@cx\pgf@x% +\tkz@cy\pgf@y% +\tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% +\endpgfinterruptboundingbox \endgroup } \let\tkzDefInCenter\tkzInCenter @@ -369,23 +376,22 @@ \def\tkzExCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzDefBisectorOutLine(#2,#1,#3) - \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% - \tkz@bx\pgf@x% - \tkz@by\pgf@y% - \tkzDefBisectorOutLine(#2,#3,#1) - \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% - \tkz@dx\pgf@x% - \tkz@dy\pgf@y% - \pgf@process{\pgfpointanchor{#1}{center}}% - \tkz@ax\pgf@x% - \tkz@ay\pgf@y% - \pgf@process{\pgfpointanchor{#3}{center}}% - \tkz@cx\pgf@x% - \tkz@cy\pgf@y% - \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)% - (\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% - \endpgfinterruptboundingbox +\tkzDefBisectorOutLine(#2,#1,#3) +\pgf@process{\pgfpointanchor{tkzPointResult}{center}}% +\tkz@bx\pgf@x% +\tkz@by\pgf@y% +\tkzDefBisectorOutLine(#2,#3,#1) +\pgf@process{\pgfpointanchor{tkzPointResult}{center}}% +\tkz@dx\pgf@x% +\tkz@dy\pgf@y% +\pgf@process{\pgfpointanchor{#1}{center}}% +\tkz@ax\pgf@x% +\tkz@ay\pgf@y% +\pgf@process{\pgfpointanchor{#3}{center}}% +\tkz@cx\pgf@x% +\tkz@cy\pgf@y% +\tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% +\endpgfinterruptboundingbox \endgroup } \let\tkzDefExCenter\tkzExCenter @@ -397,13 +403,13 @@ % passe par les midpoints par les pieds des hauteurs \begingroup \pgfinterruptboundingbox - \tkzDefMidPoint(#1,#2) - \pgfnodealias{eu@mic}{tkzPointResult} - \tkzDefMidPoint(#1,#3) - \pgfnodealias{eu@mib}{tkzPointResult} - \tkzDefMidPoint(#2,#3) - \pgfnodealias{eu@mia}{tkzPointResult} - \tkzCircumCenter(eu@mia,eu@mib,eu@mic) +\tkzDefMidPoint(#1,#2) +\pgfnodealias{eu@mic}{tkzPointResult} +\tkzDefMidPoint(#1,#3) +\pgfnodealias{eu@mib}{tkzPointResult} +\tkzDefMidPoint(#2,#3) +\pgfnodealias{eu@mia}{tkzPointResult} +\tkzCircumCenter(eu@mia,eu@mib,eu@mic) \endpgfinterruptboundingbox \endgroup } @@ -415,19 +421,19 @@ \def\tkzSymmedianCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzDefMidPoint(#2,#3) - \pgfnodealias{eu@mic}{tkzPointResult} - \tkzDefMidPoint(#1,#3) - \pgfnodealias{eu@mib}{tkzPointResult} - \tkzUProjection(#2,#3)(#1) - \pgfnodealias{ort@pta}{tkzPointResult} - \tkzDefMidPoint(#1,ort@pta) - \pgfnodealias{eu@mid}{tkzPointResult} - \tkzUProjection(#1,#3)(#2) - \pgfnodealias{ort@ptb}{tkzPointResult} - \tkzDefMidPoint(#2,ort@ptb) - \pgfnodealias{eu@mie}{tkzPointResult} - \tkzInterLL(eu@mic,eu@mid)(eu@mib,eu@mie) +\tkzDefMidPoint(#2,#3) +\pgfnodealias{eu@mic}{tkzPointResult} +\tkzDefMidPoint(#1,#3) +\pgfnodealias{eu@mib}{tkzPointResult} +\tkzUProjection(#2,#3)(#1) +\pgfnodealias{ort@pta}{tkzPointResult} +\tkzDefMidPoint(#1,ort@pta) +\pgfnodealias{eu@mid}{tkzPointResult} +\tkzUProjection(#1,#3)(#2) +\pgfnodealias{ort@ptb}{tkzPointResult} +\tkzDefMidPoint(#2,ort@ptb) +\pgfnodealias{eu@mie}{tkzPointResult} +\tkzInterLL(eu@mic,eu@mid)(eu@mib,eu@mie) \endpgfinterruptboundingbox \endgroup } @@ -441,13 +447,13 @@ \begingroup % we need to get the midpoints \pgfcoordinate{tkz@m3}{% - \pgfpointscale{0.5}{% - \pgfpointadd{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}}}% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}}}% \pgfcoordinate{tkz@m2}{% - \pgfpointscale{0.5}{% - \pgfpointadd{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#3}{center}}}}% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#3}{center}}}}% \pgfcoordinate{tkz@m1}{% \pgfpointscale{0.5}{% \pgfpointadd{\pgfpointanchor{#2}{center}}% @@ -462,13 +468,13 @@ \def\tkzGergonneCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzInCenter(#1,#2,#3) - \pgfnodealias{tkz@ptin}{tkzPointResult} - \tkzUProjection(#2,#3)(tkz@ptin) - \pgfnodealias{tkz@oca}{tkzPointResult} - \tkzUProjection(#1,#3)(tkz@ptin) - \pgfnodealias{tkz@ocb}{tkzPointResult} - \tkzInterLL(#1,tkz@oca)(#2,tkz@ocb) +\tkzInCenter(#1,#2,#3) +\pgfnodealias{tkz@ptin}{tkzPointResult} +\tkzUProjection(#2,#3)(tkz@ptin) +\pgfnodealias{tkz@oca}{tkzPointResult} +\tkzUProjection(#1,#3)(tkz@ptin) +\pgfnodealias{tkz@ocb}{tkzPointResult} +\tkzInterLL(#1,tkz@oca)(#2,tkz@ocb) \endpgfinterruptboundingbox \endgroup } @@ -480,12 +486,12 @@ \def\tkzNagelCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzDefExcentralTriangle(#1,#2,#3){tkz@a,tkz@b,tkz@c} - \tkzUProjection(#2,#3)(tkz@a) - \pgfnodealias{tkz@tgta}{tkzPointResult} - \tkzUProjection(#1,#2)(tkz@c) - \pgfnodealias{tkz@tgtc}{tkzPointResult} - \tkzInterLL(#1,tkz@tgta)(#3,tkz@tgtc) +\tkzDefExcentralTriangle(#1,#2,#3){tkz@a,tkz@b,tkz@c} +\tkzUProjection(#2,#3)(tkz@a) +\pgfnodealias{tkz@tgta}{tkzPointResult} +\tkzUProjection(#1,#2)(tkz@c) +\pgfnodealias{tkz@tgtc}{tkzPointResult} +\tkzInterLL(#1,tkz@tgta)(#3,tkz@tgtc) \endpgfinterruptboundingbox \endgroup } @@ -496,18 +502,18 @@ \def\tkzMittenpunktCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzExCenter(#2,#3,#1) - \pgfnodealias{tkz@a}{tkzPointResult} - \tkzExCenter(#3,#1,#2) - \pgfnodealias{tkz@b}{tkzPointResult} - \pgfcoordinate{tkz@ma}{% - \pgfpointscale{0.5}{% - \pgfpointadd{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}}% - \pgfcoordinate{tkz@mb}{% - \pgfpointscale{0.5}{% - \pgfpointadd{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}}% - \tkzInterLL(tkz@a,tkz@ma)(tkz@b,tkz@mb) - \endpgfinterruptboundingbox +\tkzExCenter(#2,#3,#1) +\pgfnodealias{tkz@a}{tkzPointResult} +\tkzExCenter(#3,#1,#2) +\pgfnodealias{tkz@b}{tkzPointResult} +\pgfcoordinate{tkz@ma}{% +\pgfpointscale{0.5}{% +\pgfpointadd{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}}% +\pgfcoordinate{tkz@mb}{% +\pgfpointscale{0.5}{% +\pgfpointadd{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}}% +\tkzInterLL(tkz@a,tkz@ma)(tkz@b,tkz@mb) +\endpgfinterruptboundingbox \endgroup } \let\tkzDefMittenpunktCenter\tkzMittenpunktCenter @@ -518,14 +524,14 @@ \def\tkzFeuerbachCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzEulerCenter(#1,#2,#3) - \pgfnodealias{tkz@euler}{tkzPointResult} - \tkzInCenter(#1,#2,#3) - \pgfnodealias{tkz@in}{tkzPointResult} - \tkzUProjection(#2,#3)(tkzPointResult) - \tkzInterLC(tkz@in,tkz@euler)(tkz@in,tkzPointResult)\tkzGetFirstPoint{tkz@fe} - \tkzRenamePoint(tkz@fe){tkzPointResult} - \endpgfinterruptboundingbox +\tkzEulerCenter(#1,#2,#3) +\pgfnodealias{tkz@euler}{tkzPointResult} +\tkzInCenter(#1,#2,#3) +\pgfnodealias{tkz@in}{tkzPointResult} +\tkzUProjection(#2,#3)(tkzPointResult) +\tkzInterLC(tkz@in,tkz@euler)(tkz@in,tkzPointResult)\tkzGetFirstPoint{tkz@fe} +\tkzRenamePoint(tkz@fe){tkzPointResult} +\endpgfinterruptboundingbox \endgroup } \let\tkzDefFeuerbachCenter\tkzFeuerbachCenter @@ -535,11 +541,11 @@ \def\tkzOrthogonalCenter(#1,#2){% \begingroup \pgfinterruptboundingbox - \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) - \pgfnodealias{tkzSecondPointResult}{tkzPointResult} - \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) +\tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2) +\pgfnodealias{tkzFirstPointResult}{tkzPointResult} +\tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) +\pgfnodealias{tkzSecondPointResult}{tkzPointResult} +\tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) \endpgfinterruptboundingbox \endgroup } @@ -587,21 +593,40 @@ %<--------------------------------------------------------------------------–> \def\tkz@numptcirc{0} \pgfkeys{/tkzptcircle/.cd, - through/.code args = {angle #1 center #2 point #3} {\def\tkz@angle{#1}% - \def\tkz@center{#2}% - \def\tkz@through{#3}% - \def\tkz@numptcirc{0}}, - R/.code args = {angle #1 center #2 radius #3} {\def\tkz@angle{#1}% - \def\tkz@center{#2}% - \def\tkz@radius{#3}% - \def\tkz@numptcirc{1}}, +through/.code args = {center #1 angle #2 point #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@through{#3}% + \def\tkz@numptcirc{0}}, +R/.code args = {center #1 angle #2 radius #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@radius{#3}% + \def\tkz@numptcirc{1}}, +through in rad/.code args = {center #1 angle #2 point #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@through{#3}% + \def\tkz@numptcirc{2}}, +R in rad/.code args = {center #1 angle #2 radius #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@radius{#3}% + \def\tkz@numptcirc{3}} } -\def\tkzDefPointOnCircle{\pgfutil@ifnextchar[{\tkz@DefPointOnCircle}{\tkz@DefPointOnCircle[]}} + +\def\tkzDefPointOnCircle{\pgfutil@ifnextchar[{\tkz@DefPointOnCircle}{% + \tkz@DefPointOnCircle[]}} \def\tkz@DefPointOnCircle[#1]{% \begingroup \pgfqkeys{/tkzptcircle}{#1} \ifcase\tkz@numptcirc% \tkz@@CalcLengthcm(\tkz@center,\tkz@through){tkz@radius} + \or% 1 + \relax% + \or% 2 + \pgfmathparse{\tkz@angle\space r} + \let\tkz@angle\pgfmathresult + \tkz@@CalcLengthcm(\tkz@center,\tkz@through){tkz@radius} + \or% 3 + \pgfmathparse{\tkz@angle\space r} + \let\tkz@angle\pgfmathresult \fi \path (\tkz@center) --++(\tkz@angle:\tkz@radius) coordinate(tkzPointResult); \endgroup diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex index f8c67708122..728f7ab4df3 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-el-points-with.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points-with.tex} \makeatletter %<--------------------------------------------------------------------------–> % Vectors @@ -22,7 +22,7 @@ % utile pour la compatibilité avec pgf 2 %<--------------------------------------------------------------------------–> % Duplicate Length à revoir pas de pt pas de global -% ||v(CN)||= ||v(AB)|| et v(CN) colineaire à v(CD) +% v(CN) = v(AB) et v(CN) colineaire à v(CD) % A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ????? %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> @@ -130,7 +130,7 @@ %<--------------------------------------------------------------------------–> % tkzVector K Orth coeff dans #1 % v(AN) perp v(AB) (v(AB) , v(AN) ) sens direct cercle trigo -% ||v(AN)||=||v(AB)|| +% v(AN) = v(AB) %<--------------------------------------------------------------------------–> % tkz@numv 1 \def\tkzVecKOrth{\pgfutil@ifnextchar[{\tkz@VecKOrth}{\tkz@VecKOrth[1]}} @@ -175,7 +175,7 @@ %<--------------------------------------------------------------------------–> % tkzVecKOrthNorm coeff dans #1 % v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo -% ||v(AN||=1 si #1 est vide ou =1 sinon ||v(AN||=K +% v(AN =1 si #1 est vide ou =1 sinon v(AN =K %<--------------------------------------------------------------------------–> % tkz@numv 3 \def\tkzVecKOrthNorm{\pgfutil@ifnextchar[{\tkz@VecKOrthNorm}% @@ -195,8 +195,8 @@ }% %<--------------------------------------------------------------------------–> % VectorNormalised ou K*VectorNormalised -% A-->#2 B-->#3 N-->#4 v(AB) devient v(AN) tq ||v(AN)||=1 si #1=1 -% sinon ||v(AN)||=#1 +% A-->#2 B-->#3 N-->#4 v(AB) devient v(AN) tq v(AN) =1 si #1=1 +% sinon v(AN) =#1 %<--------------------------------------------------------------------------–> % tkz@numv 4 \def\tkzVecKNorm{\pgfutil@ifnextchar[{\tkz@VecKNorm}{\tkz@VecKNorm[1]}} diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex index 7f8088b225b..5bb4f41e880 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-points.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points.tex} \makeatletter %<---------------------------------------------------------------------------> % init def point @@ -115,57 +115,6 @@ % \def\tkz@drawnode#1{\path[coordinate](\tkzpt@xa,\tkzpt@ya) coordinate(#1); % \tkz@DrawPt{#1} % } -%<---------------------------------------------------------------------------> -% tkzSetUpPoint définit la forme d'un point -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzsetuppt/.cd, - size/.store in = \tkz@pt@size, - color/.store in = \tkz@pt@color, - fill/.store in = \tkz@pt@fill, - shape/.store in = \tkz@pt@shape, - size = \tkz@euc@pointsize, - color = \tkz@euc@pointcolor, - fill = \tkz@euc@pointcolor, - shape = \tkz@euc@pointshape, - /tkzsetuppt/.search also = {/tikz}, - } -\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% - \tkz@SetUpPoint[]}} -\def\tkz@SetUpPoint[#1]{% -\pgfqkeys{/tkzsetuppt}{#1} -% redefine point style with new values -\tikzset{point style/.style={draw = \tkz@pt@color, - inner sep = 0pt, - shape = \tkz@pt@shape, - minimum size = \tkz@pt@size, - fill = \tkz@pt@fill}} -}% end setup -%<---------------------------------------------------------------------------> -% Draw Point -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzdrawpt/.cd, - size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, - size = \tkz@euc@pointsize, - /tkzdrawpt/.search also = {/tikz}, -} -%<-------------------------------------------------------------------------- -\def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} -\def\tkz@DrawPoint[#1](#2){% -\begingroup - \pgfqkeys{/tkzdrawpt}{#1} - \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016 -\endgroup -} -%<---------------------------------------------------------------------------> -\def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} -%<---------------------------------------------------------------------------> -\def\tkz@drawpts[#1](#2){% -\begingroup - \pgfqkeys{/tkzdrawpt}{#1} - \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016 -\endgroup -} -%<---------------------------------------------------------------------------> % %<---------------------------------------------------------------------------> \def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);} @@ -191,110 +140,6 @@ \coordinate (#3) at (#2); \end{scope} } -%<--------------------------------------------------------------------------> -% tkzLabelPoint Affichage des LABELS pour un point -%<--------------------------------------------------------------------------> -\def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}} -\def\tkz@LabelPoint[#1](#2)#3{% - \node[label style,#1] at (#2) {#3};}% -%<---------------------------------------------------------------------------> - -\def\tkzLabelPoints{\pgfutil@ifnextchar[{\tkz@LabelPoints}{\tkz@LabelPoints[]}}% -\def\tkz@LabelPoints[#1](#2){% - \foreach \point in {#2}{ - \node[label style,#1] at (\point) {$\point$};} -}% -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzsetuppt/.cd, - size/.store in = \tkz@pt@size, - color/.store in = \tkz@pt@color, - fill/.store in = \tkz@pt@fill, - shape/.store in = \tkz@pt@shape, - size = \tkz@euc@pointsize, - color = \tkz@euc@pointcolor, - fill = \tkz@euc@pointcolor, - shape = \tkz@euc@pointshape, - /tkzsetuppt/.search also = {/tikz}, - } -\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% - \tkz@SetUpPoint[]}} -\def\tkz@SetUpPoint[#1]{% -\pgfqkeys{/tkzsetuppt}{#1} -% redefine point style with new values -\tikzset{point style/.style={draw = \tkz@pt@color, - inner sep = 0pt, - shape = \tkz@pt@shape, - minimum size = \tkz@pt@size, - fill = \tkz@pt@fill}} -}% end setup -%<---------------------------------------------------------------------------> -% -%<---------------------------------------------------------------------------> -\def\tkzSetUpLabel{\pgfutil@ifnextchar[{\tkz@SetUpLabel}{% - \tkz@SetUpLabel[]}} -\def\tkz@SetUpLabel[#1]{% -\tikzset{label style/.style={#1}} -}% end setup -%<---------------------------------------------------------------------------> - -\pgfkeys{/tkzautolab/.cd, - center/.store in = \tkz@center, - dist/.store in = \tkz@dist, - dist = 0.15, - /tkzautolab/.search also = {/tikz}, -} -\def\tkzAutoLabelPoints{\pgfutil@ifnextchar[{\tkz@AutoLabelPoints}{\tkz@AutoLabelPoints[]}}% -\def\tkz@AutoLabelPoints[#1](#2){% -\begingroup -\pgfqkeys{/tkzautolab}{#1} - \foreach \point in {#2}{ - \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/tkzautolab/.cd,#1]{$\point$};} -\endgroup -}% -%<---------------------------------------------------------------------------> -% PointShowCoord -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzprcoord/.cd, - xlabel/.store in = \tkz@xlabel, - ylabel/.store in = \tkz@ylabel, - xstyle/.code = {\tikzset{xcoord style/.append style={#1}}}, - ystyle/.code = {\tikzset{ycoord style/.append style={#1}}}, - noxdraw/.is if = tkz@coord@noxdraw, - noxdraw/.default = true, - noydraw/.is if = tkz@coord@noydraw, - noydraw/.default = true, - xlabel = {}, - ylabel = {}, - xstyle = {}, - ystyle = {}, - noxdraw = false, - noydraw = false, - /tkzprcoord/.search also = {/tikz}, -} -\def\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{\tkz@PointShowCoord[]}} -\def\tkz@PointShowCoord[#1](#2){% -\begingroup -\pgfqkeys{/tkzprcoord}{#1} -% 2019 for showcoord - \iftkznodedefined{tkz@xline}{}{% - \path (0,0) --(1,0) node(tkz@xline){}; - \path (0,0) --(0,1) node(tkz@yline){}; - } -\iftkz@coord@noxdraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 |- tkz@xline);\fi -\iftkz@coord@noydraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 -| tkz@yline);\fi -\ifx\tkzutil@empty\tkz@xlabel -\else -\path (#2)--(#2 |- tkz@xline) - node[xcoord style] {\tkz@xlabel}; -\fi -\ifx\tkzutil@empty\tkz@ylabel -\else - \path (#2)--(#2 -| tkz@yline) - node[ycoord style] {\tkz@ylabel}; -\fi -\endgroup -} -\let\tkzShowPointCoord\tkzPointShowCoord %<---------------------------------------------------------------------------> % Coordonnées d'un point % result in #2x et #2y #1 est le point et on récupère ses coordonnées diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex index 19aeced0465..d1f3692d05b 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-polygons.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-polygons.tex} % bug in regular polygon side 2020/03/09 \makeatletter %<--------------------------------------------------------------------------–> @@ -40,15 +40,13 @@ %<--------------------- rectangle ---------------------------------–> % %<--------------------------------------------------------------------------–> - \def\tkzDefRectangle{\pgfutil@ifnextchar[{\tkz@DefRectangle}% {\tkz@DefRectangle[]}} \def\tkz@DefRectangle[#1](#2,#3){% \begingroup - \path[#1](#2) -| coordinate (tkzFirstPointResult) (#3) -| coordinate (tkzSecondPointResult) (#2); + \path[#1](#2) - coordinate (tkzFirstPointResult) (#3) - coordinate (tkzSecondPointResult) (#2); \endgroup } - %<-------------------------- gold rectangle -------------------------------–> % %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex index e88b6efd35b..ad0ff406810 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-protractor.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-protractor.tex} \makeatletter %<--------------------------------------------------------------------------–> % !!! idea from Y. Combe !!! @@ -43,14 +43,14 @@ \draw[fill=black] (0,0) circle (.08mm); \node[draw, circle, inner sep=.2mm] (a) at (0,0) {}; \foreach \x in {0, 90, ..., 360}{% - \draw[very thin, gray!40] (a) -- (\x:4cm);} + \draw[very thin, gray!40] (a) -- (\x:4cm);} \foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);} -\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);} +\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);} \foreach \x in {0,10,...,350}{% \node[rotate=(\x-90)] at (\x:3.6cm) {\tiny\x}; -} +} \draw [>=stealth',->, thick,black] (0:2.5) arc(0:32:2.5); - \draw [>=stealth',->, thick,black] (0:2) arc(0:32:2); + \draw [>=stealth',->, thick,black] (0:2) arc(0:32:2); \draw [>=stealth',->, thick,black] (0:1.5) arc(0:32:1.5); } @@ -91,7 +91,7 @@ \def\tkzProtractor{\pgfutil@ifnextchar[{\tkz@Protractor}{\tkz@Protractor[]}} \def\tkz@Protractor[#1](#2,#3){% -\tkz@RappReturntrue +\tkz@RappReturnfalse \pgfqkeys{/protractor}{#1} \tkz@@extractxy{#2} \global\tkz@ax\pgf@x diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex index da68ae74043..c21ec58fbba 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-sectors.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-sectors.tex} \makeatletter %<----------------------- Sectors ------------------------------–> \gdef\tkz@nums{0} diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex index d10caa8f484..7c4bb47903c 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-show.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-show.tex} \makeatletter %<--------------------------------------------------------------------------–> % finding specific points in a triangle diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex index 98c9ec3f2db..49be3da8660 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex @@ -10,16 +10,16 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-triangles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-triangles.tex} \makeatletter %<--------------------------------------------------------------------------–> % Triangle Equilateral %<--------------------------------------------------------------------------–> \def\tkzDefEquilateral(#1,#2){ \begingroup -\tkzDefMidPoint(#1,#2) + %\tkzDefMidPoint(#1,#2) \tkzURotateAngle(#1,60)(#2) \endgroup } @@ -34,22 +34,16 @@ \endgroup } %<--------------------------------------------------------------------------–> -\def\tkzDefIsoscelesRightTriangle{\pgfutil@ifnextchar[{\tkz@DefIsoscelesRightTriangle}{% - \tkz@DefIsoscelesRightTriangle[]}} - -\def\tkz@DefIsoscelesRightTriangle[#1](#2,#3){% +\def\tkzDefIsoscelesRightTriangle(#1,#2){% \begingroup - \tkzURotateAngle(#2,45)(#3) + \tkzURotateAngle(#1,45)(#2) \pgfnodealias{tkz@a}{tkzPointResult} - \tkzUHomo(#2,\tkzSqrTwobyTwo)(tkz@a) - \tkzDrawPolygon[#1](#2,#3,tkzPointResult) + \tkzUHomo(#1,\tkzSqrTwobyTwo)(tkz@a) \endgroup } %<--------------------------------------------------------------------------–> % Triangle OneTwo %<--------------------------------------------------------------------------–> - - \def\tkzDefTwoOne(#1,#2){ \begingroup \iftkz@swap@tr @@ -59,6 +53,9 @@ \fi \endgroup } +%<--------------------------------------------------------------------------– +% Pythagore +%<--------------------------------------------------------------------------– \def\tkzDefPythagore(#1,#2){ \begingroup \iftkz@swap@tr @@ -68,6 +65,9 @@ \fi \endgroup } +%<--------------------------------------------------------------------------– +% School +%<--------------------------------------------------------------------------– \def\tkzDefSchoolTriangle(#1,#2){ \begingroup \iftkz@swap@tr @@ -83,44 +83,58 @@ \fi \endgroup } +%<--------------------------------------------------------------------------– +% Gold +%<--------------------------------------------------------------------------– \def\tkzDefGoldTriangle(#1,#2){ \begingroup - \iftkz@swap@tr - \tkzURotateAngle(#1,36)(#2) + \tkzDefPointWith[K=-\tkzInvPhi](#2,#1) \else - \tkzURotateAngle(#1,-36)(#2) + \tkzDefPointWith[K=\tkzInvPhi](#2,#1) \fi \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefEuclideTriangle(#1,#2){ \begingroup - \tkzURotateAngle(#1,72)(#2) - \tkzUHomo(#1,\tkzPhi)(tkzPointResult) + \iftkz@swap@tr + \tkzURotateAngle(#1,36)(#2) + \else + \tkzURotateAngle(#1,-36)(#2) + \fi \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefGoldenTriangle(#1,#2){ \begingroup - \iftkz@swap@tr - \tkzDefPointWith[K=-\tkzInvPhi](#2,#1) - \else - \tkzDefPointWith[K=\tkzInvPhi](#2,#1) - \fi + \tkzURotateAngle(#1,72)(#2) + \tkzUHomo(#1,\tkzPhi)(tkzPointResult) \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefCheopsTriangle(#1,#2){ \begingroup \tkzDefMidPoint(#1,#2) \tkzDefPointWith[K=-\tkzSqrtPhi](tkzPointResult,#1) \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefTwoAnglesTriangle(#1,#2){ \begingroup \tkzURotateAngle(#1,\tkz@alpha)(#2) - \pgfnodealias{tkz@pta}{tkzPointResult} + \pgfnodealias{tkz@a}{tkzPointResult} \tkzURotateAngle(#2,-\tkz@beta)(#1) - \pgfnodealias{tkz@ptb}{tkzPointResult} - \tkzInterLL(#1,tkz@pta)(#2,tkz@ptb) + \pgfnodealias{tkz@b}{tkzPointResult} + \tkzInterLL(#1,tkz@a)(#2,tkz@b) \endgroup } %<--------------------------------------------------------------------------–> @@ -128,13 +142,13 @@ %<--------------------------------------------------------------------------–> \def\tkz@numtr{0} -\pgfkeys{% - /deftriangle/.cd, +\pgfkeys{/deftriangle/.cd, equilateral/.code = \def\tkz@numtr{0}, half/.code = \def\tkz@numtr{1}, two one/.code = \def\tkz@numtr{1}, pythagore/.code = \def\tkz@numtr{2}, pythagoras/.code = \def\tkz@numtr{2}, + right/.code = \def\tkz@numtr{2}, egyptian/.code = \def\tkz@numtr{2}, school/.code = \def\tkz@numtr{3}, golden/.code = \def\tkz@numtr{4}, @@ -145,18 +159,17 @@ cheops/.code = \def\tkz@numtr{7}, two angles/.code args = {#1 and #2} { \def\tkz@numtr{8}% \def\tkz@alpha{#1}% - \def\tkz@beta{#2}}, + \def\tkz@beta{#2}}, isosceles right/.code = \def\tkz@numtr{9}, swap/.is if = tkz@swap@tr, swap/.default = true, swap = false, - equilateral + equilateral } \def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{\tkz@DefTriangle[]}} \def\tkz@DefTriangle[#1](#2,#3){% -\begingroup -\pgfkeys{/deftriangle/.cd,equilateral} +\begingroup \pgfqkeys{/deftriangle}{#1} \ifcase\tkz@numtr% \tkzDefEquilateral(#2,#3) @@ -353,17 +366,14 @@ \foreach \name [count=\i] in {#5} {% \global\expandafter\edef\csname tkz@point\i\endcsname{\name} } - \tkzDefExCircle(#2,#3,#4) - \pgfnodealias{tkz@b}{tkzPointResult} \tkzGetLength{tkz@rb} - \tkzDefExCircle(#3,#4,#2) - \pgfnodealias{tkz@c}{tkzPointResult} \tkzGetLength{tkz@rc} - \tkzDefExCircle(#4,#2,#3) - \pgfnodealias{tkz@a}{tkzPointResult} \tkzGetLength{tkz@ra} - \tkzInterLC[R](#3,tkz@b)(tkz@b,\tkz@rb) - \tkzGetSecondPoint{\tkz@pttr@name\csname tkz@point2\endcsname} - \tkzInterLC[R](#4,tkz@c)(tkz@c,\tkz@rc) - \tkzGetSecondPoint{\tkz@pttr@name\csname tkz@point3\endcsname} - \tkzInterLC[R](#2,tkz@a)(tkz@a,\tkz@ra) + \tkzDefExCircle(#2,#3,#4) \tkzGetPoints{tkz@b}{tkz@hb} + \tkzDefExCircle(#3,#4,#2) \tkzGetPoints{tkz@c}{tkz@hc} + \tkzDefExCircle(#4,#2,#3) \tkzGetPoints{tkz@a}{tkz@ha} + \tkzInterLC[near](#3,tkz@b)(tkz@b,tkz@hb) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point2\endcsname} + \tkzInterLC[near](#4,tkz@c)(tkz@c,tkz@hc) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point3\endcsname} + \tkzInterLC[near](#2,tkz@a)(tkz@a,tkz@ha) \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point1\endcsname} \endgroup } diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex index a00317d77cd..b6ac1c328d1 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-BB.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-BB.tex} \makeatletter %<--------------------------------------------------------------------------–> \def\tkzShowBB{\pgfutil@ifnextchar[{\tkz@ShowBB}{\tkz@ShowBB[]}} diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex index 61b33defe1b..b46cee19572 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-angles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-angles.tex} \makeatletter %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex index a5a1bc3ed10..639a5ef21ad 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-base.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-base.tex} \makeatletter %<--------------------------------------------------------------------------–> \global\let\tkz@tmp@xa\tkz@init@xmin% modif 2016 diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex index 0b0b7fc9109..b5ba3e673d9 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-colors} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-colors} \makeatletter %<------ Initialisation of the colors with tkzSetUpColors -----------------> diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex index 74d351e2e41..1c214a31504 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex @@ -13,9 +13,9 @@ % The Current Maintainer of this work is Alain Matthes. % utf8 encoding -\def\fileversion{4.04} -\def\filedate{2022/01/22} -\typeout{2022/01/22 4.04 tkz-tools-intersections.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-intersections.tex} \makeatletter %<--------------------------------------------------------------------------–> % intersection de deux lignes @@ -25,37 +25,37 @@ } \def\tkz@InterLL(#1,#2)(#3,#4)#5{% -%\path (intersection of #1--#2 and #3--#4) coordinate(#5); +\path (intersection of #1--#2 and #3--#4) coordinate(#5); % méthode with tikz -\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}% -\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}% -\tkz@ax\pgf@x% -\tkz@ay\pgf@y% -\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}% -\pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}} -\tkz@bx\pgf@x% -\tkz@by\pgf@y% -\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}% -\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}% -\tkz@cx\pgf@x% -\tkz@cy\pgf@y% -\pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}% -\pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}% -\tkz@dx\pgf@x% -\tkz@dy\pgf@y% - -\edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}} -\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}} -\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}} -\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}} -\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}} -\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}} -\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}} -\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}} -\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}} -\edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}} -\edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}} -\path[coordinate](\tkz@xs,\tkz@ys) coordinate (#5); +% \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}% +% \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}% +% \tkz@ax\pgf@x% +% \tkz@ay\pgf@y% +% \pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}% +% \pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}} +% \tkz@bx\pgf@x% +% \tkz@by\pgf@y% +% \pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}% +% \pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}% +% \tkz@cx\pgf@x% +% \tkz@cy\pgf@y% +% \pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}% +% \pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}% +% \tkz@dx\pgf@x% +% \tkz@dy\pgf@y% +% +% \edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}} +% \edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}} +% \edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}} +% \edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}} +% \edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(809.55841)}} +% \edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(809.55841)}} +% \edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}} +% \edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}} +% \edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}} +% \edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}} +% \edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}} +% \path[coordinate](\tkz@xs,\tkz@ys) coordinate (#5); } @@ -74,8 +74,8 @@ \edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}} \edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}} \edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}} -\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}} -\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}} +\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(809.55841)}} +\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(809.55841)}} \edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}} \edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}} \edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}} @@ -112,7 +112,7 @@ % c -= 2 * (sc.x * p1.x + sc.y * p1.y + sc.z * p1.z); % c -= r * r; % bb4ac = b * b - 4 * a * c; -% if (ABS(a) < EPS || bb4ac < 0) { +% if (ABS(a) < EPS bb4ac < 0) { % *mu1 = 0; % *mu2 = 0; % return(FALSE); @@ -125,14 +125,16 @@ % } %<---------- test ------------------------------------------------------–> \def\tkzTestInterLC(#1,#2)(#3,#4){% +\begingroup \tkz@Projection(#1,#2)(#3){tkz@pth}% distance centre à la ligne \tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}% \tkz@@CalcLength(#3,#4){tkzLengthResult}%calcul du rayon \ifdim\tkz@mathLen pt>\tkzLengthResult pt\relax% -\tkzFlagLCfalse +\global\tkzFlagLCfalse \else -\tkzFlagLCtrue +\global\tkzFlagLCtrue \fi +\endgroup } %<--------------------------------------------------------------------------–> \def\tkz@numlc{0} @@ -141,9 +143,15 @@ R/.code = \def\tkz@numlc{1}, with nodes/.code = \def\tkz@numlc{2}, common/.store in = \tkz@common, - near/.store in = \tkz@near, common = {}, - near = {}, + near/.is if = tkz@near, + near/.default = true, + near = false, + next to/.store in = \tkz@nextto, + next to/.initial = {}, + next/.default = {}, + next to = {}, + next to/.value required, node } %<--------------------------------------------------------------------------–> @@ -164,34 +172,46 @@ \tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}% {tkzSecondPointResult}% \fi - \ifx\tkz@common\tkzutil@empty - \ifx\tkz@near\tkzutil@empty - \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4) \tkzGetAngle{tkz@an} - \ifdim\tkz@an pt<180 pt\relax% - \else - \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} - \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} - \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} - \fi - \else +\iftkz@near \tkz@@CalcLength(#2,tkzFirstPointResult){tkzLengthFirst} \tkz@@CalcLength(#2,tkzSecondPointResult){tkzLengthSecond} - \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax% - \else - \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} - \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} - \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} - \fi - \fi - \else -\tkz@@CalcLength(\tkz@common,tkzSecondPointResult){tkz@mathLen} - \ifdim\tkz@mathLen pt<0.1pt\relax% - \else - \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} - \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} - \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} - \fi - \fi + \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi +\else + \ifx\tkz@common\tkzutil@empty + \ifx\tkz@nextto\tkzutil@empty + \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4) + \tkzGetAngle{tkz@an} + \ifdim\tkz@an pt<180 pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi + \else + \tkz@@CalcLength(\tkz@nextto,tkzFirstPointResult){tkzLengthFirst} + \tkz@@CalcLength(\tkz@nextto,tkzSecondPointResult){tkzLengthSecond} + \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi + \fi + \else + \tkz@@CalcLength(\tkz@common,tkzSecondPointResult){tkz@mathLen} + \ifdim\tkz@mathLen pt<1pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi + \fi +\fi%near \endpgfinterruptboundingbox \endgroup } @@ -351,17 +371,30 @@ % Intersection de deux cercles %<--------------------------------------------------------------------------–> %<---------- test ------------------------------------------------------–> -% test avec des nodes +% test avec des nodes R-r <= d <= R+r \def\tkzTestInterCC(#1,#2)(#3,#4){% +\begingroup \tkz@@CalcLength(#1,#3){tkz@mathLen}% distance entre les centres \tkz@@CalcLength(#2,#1){tkz@rA}%calcul du rayon \tkz@@CalcLength(#4,#3){tkz@rB}%calcul du rayon +% test if d <= rA + rB ? \edef\tkz@rS{\fpeval{\tkz@rA+\tkz@rB}} \ifdim\tkz@mathLen pt > \tkz@rS pt\relax% -\tkzFlagCCfalse +\global\tkzFlagCCfalse +\else +% now test if d>= rA - rB or rB-rA + \ifdim \tkz@rA pt > \tkz@rB pt\relax% + \edef\tkz@rD{\fpeval{\tkz@rA-\tkz@rB}} + \else + \edef\tkz@rD{\fpeval{\tkz@rB-\tkz@rA}} + \fi +\ifdim \tkz@rD pt > \tkz@mathLen pt\relax% + \global\tkzFlagCCfalse \else -\tkzFlagCCtrue +\global\tkzFlagCCtrue \fi +\fi +\endgroup } \def\tkz@numcc{0} @@ -433,7 +466,7 @@ \edef\tkz@xx{\fpeval{\tkz@ax+\tkz@aa/\tkz@dd*(\tkz@bx - \tkz@ax)}} \edef\tkz@yy{\fpeval{\tkz@ay+\tkz@aa/\tkz@dd*(\tkz@by - \tkz@ay)}} \path[coordinate](\tkz@xx pt,\tkz@yy pt) coordinate (tkzRadialCenter); -\edef\tkz@hh{\fpeval{sqrt((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa))}} +\edef\tkz@hh{\fpeval{sqrt(abs((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa)))}}% abs !2022 \edef\tkz@rx{\fpeval{\tkz@hh / \tkz@dd * (\tkz@ay - \tkz@by)}} \edef\tkz@ry{\fpeval{\tkz@hh / \tkz@dd * (\tkz@bx - \tkz@ax)}} \edef\tkz@xs{\fpeval{\tkz@xx + \tkz@rx}} diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex index 6723a41a359..e3c602abb35 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-math.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-math.tex} \makeatletter %<--------------------------------------------------------------------------> % \tkzpointnormalised# @@ -23,7 +23,7 @@ % \tkzFindSlope % option xfp -% \tkzpointnormalised normalise un point A-->A' tq ||v(OA')=1|| +% \tkzpointnormalised normalise un point A-->A' tq v(OA')=1 % équivalent de \pgfpointnormalised avec fp % example % \tkzpointnormalised{% @@ -52,7 +52,7 @@ %<--------------------------------------------------------------------------> % \tkzCalcLength Distance entre deux points en pt ou en cm avec xfp % \veclen mais avec fp -% option cm le résultat est en cm sinon en pt +% option cm le résultat est en cm sinon en pt with cm=false %<--------------------------------------------------------------------------> \pgfkeys{tkzcalclen/.cd, cm/.is if = tkzLengthIncm, @@ -67,7 +67,7 @@ \tkz@@CalcLength(#2,#3){tkzLengthResult} \iftkzLengthIncm \pgfmathparse{\tkzLengthResult pt/1cm} - \edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,5)}} + \edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,6)}} \global\let\tkzLengthResult\tkz@xfpMathLen \fi \endgroup @@ -76,16 +76,14 @@ \pgfpointdiff{\pgfpointanchor{#1}{center}}% {\pgfpointanchor{#2}{center}}% \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} -\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,5)}} +\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,6)}} \global\expandafter\edef\csname #3\endcsname{\tkz@xfpMathLen} } \def\tkz@@CalcLengthcm(#1,#2)#3{% \pgfpointdiff{\pgfpointanchor{#1}{center}}% {\pgfpointanchor{#2}{center}}% \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} -\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,5)}} -\pgfmathparse{\tkz@xfpMathLen pt/1cm} -\edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,5)}} +\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen/28.45274,6)}} \global\expandafter\edef\csname #3\endcsname{\tkz@xfpMathLen} } %<--------------------------------------------------------------------------> @@ -120,9 +118,98 @@ \begingroup% \pgfmath@x##1pt\relax% \pgfmath@y##2pt\relax% - \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} + \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} \pgfmath@returnone\tkz@xfpMathLen pt% \endgroup% -}}} +}}}% +%<---------------------------------------------------------–> +\def\tkzSwapPoints(#1,#2){ + \pgfnodealias{tkzPointTmp}{#2} + \pgfnodealias{#2}{#1} + \pgfnodealias{#1}{tkzPointTmp}} +%<---------------------------------------------------------–> +\def\tkzPermute(#1,#2,#3){ +\tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt} +\tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2} +\tkzSwapPoints(tkzpt,#3)} +%<---------------------------------------------------------–> +\def\tkzDotProduct(#1,#2,#3){% +\begingroup +\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}% +\tkz@ax\pgf@x% +\tkz@ay\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}} +\tkz@bx\pgf@x% +\tkz@by\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}% +\tkz@cx\pgf@x% +\tkz@cy\pgf@y% +\edef\tkz@@dotprod{\fpeval{round(abs((\tkz@bx-\tkz@ax)*(\tkz@cx-\tkz@ax)+(\tkz@by-\tkz@ay)*(\tkz@cy-\tkz@ay))/(28.45274*28.45274),5)}} +\global\let\tkzMathResult\tkz@@dotprod +\endgroup} +%<---------------------------------------------------------–> + \def\tkzGetResult#1{% + \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}} +%<---------------------------------------------------------–> +% #1,#2 and #3 aligned +\def\tkzIsLinear(#1,#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#1,#2){tkz@la} +\tkz@@CalcLengthcm(#1,#3){tkz@lb} +\tkzDotProduct(#1,#2,#3) +\edef\tkzResult{\fpeval{abs((\tkzMathResult)-(\tkz@la)*(\tkz@lb))}} +\ifdim \tkzResult pt < 0.01 pt\relax% +\global\tkzLineartrue +\else +\global\tkzLinearfalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +% syntax : vec(#2,#1) ortho vec(#3,#1) +\def\tkzIsOrtho(#1,#2,#3){% +\begingroup +\tkzDotProduct(#1,#2,#3) +\edef\tkzResult{\fpeval{abs(\tkzMathResult)}} +\ifdim \tkzResult pt < 1 pt\relax% +\global\tkzOrthotrue +\else +\global\tkzOrthofalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +%<---------------------------------------------------------–> +% \tkzPowerCircle(M)(O,A) --> OM^2-OA^2 +\def\tkzPowerCircle(#1)(#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#2,#3){tkz@ra} +\tkz@@CalcLengthcm(#1,#2){tkz@om} +\gdef\tkzMathResult{\fpeval{round(\tkz@om*\tkz@om -\tkz@ra*\tkz@ra,5)}} +\endgroup +} +%<---------------------------------------------------------–> +\def\tkzDefRadicalAxis(#1,#2)(#3,#4){% +\begingroup +\tkz@@CalcLengthcm(#1,#3){tkz@da} +\tkz@@CalcLengthcm(#1,#2){tkz@ra} +\tkz@@CalcLengthcm(#3,#4){tkz@rb} +\edef\tkzMathResult{\fpeval{(\tkz@ra+\tkz@rb)}} +\ifdim \tkzMathResult pt < \tkz@da pt\relax% + \tkzURotateAngle(#1,60)(#3) \tkzGetPoint{tkz@aux} + \tkzInterCC(#1,#2)(tkz@aux,#1) \tkzGetPoints{tkz@pta}{tkz@ptb} + \tkzInterCC(#3,#4)(tkz@aux,#1) \tkzGetPoints{tkz@ptc}{tkz@ptd} + \tkzInterLL(tkz@pta,tkz@ptb)(tkz@ptc,tkz@ptd) \tkzGetPoint{tkz@pta} + \tkzUProjection(#1,#3)(tkz@pta) \tkzGetPoint{tkz@ptb} + \pgfnodealias{tkzSecondPointResult}{tkz@ptb} + \pgfnodealias{tkzFirstPointResult}{tkz@pta} +\else +\tkzInterCCR(#1,\tkz@ra)(#3,\tkz@rb){tkzFirstPointResult}{tkzSecondPointResult} +\fi +\endgroup +} \makeatother \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex index c3ba8ab7366..2a3ddbbea32 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-utilities.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-utilities.tex} \makeatletter %<------------- % chargement des modules ----------------------------------> \def\tkz@obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}% @@ -29,12 +29,12 @@ \expandafter\ifx\csname tkz@library@\tkz@temp @loaded\endcsname\relax% \expandafter\global\expandafter\let\csname tkz@library@\tkz@temp @loaded\endcsname=\pgfutil@empty% \expandafter\edef\csname tkz@obj@#1@atcode\endcsname{\the\catcode`\@} - \expandafter\edef\csname tkz@obj@#1@barcode\endcsname{\the\catcode`\|} + \expandafter\edef\csname tkz@obj@#1@barcode\endcsname{\the\catcode`\ } \catcode`\@=11 - \catcode`\|=12 + \catcode`\ =12 \input tkz-obj-\tkz@temp.tex \catcode`\@=\csname tkz@obj@#1@atcode\endcsname - \catcode`\|=\csname tkz@obj@#1@barcode\endcsname + \catcode`\ =\csname tkz@obj@#1@barcode\endcsname \fi% }% }% @@ -54,12 +54,12 @@ \expandafter\ifx\csname tkz@library@\tkz@temp @loaded\endcsname\relax% \expandafter\global\expandafter\let\csname tkz@library@\tkz@temp @loaded\endcsname=\pgfutil@empty% \expandafter\edef\csname tkz@tool@#1@atcode\endcsname{\the\catcode`\@} - \expandafter\edef\csname tkz@tool@#1@barcode\endcsname{\the\catcode`\|} + \expandafter\edef\csname tkz@tool@#1@barcode\endcsname{\the\catcode`\ } \catcode`\@=11 - \catcode`\|=12 + \catcode`\ =12 \input tkz-tools-\tkz@temp.tex \catcode`\@=\csname tkz@tool@#1@atcode\endcsname - \catcode`\|=\csname tkz@tool@#1@barcode\endcsname + \catcode`\ =\csname tkz@tool@#1@barcode\endcsname \fi% }% }% diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex index 5bab4312cec..b8ff9c3901c 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-text.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-text.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzText @@ -50,7 +50,7 @@ \pgfkeys{/tkzlegend/.cd, line/.is if = tkz@legend@line, line/.default = true, - line = false, + line = false, /tkzlegend/.search also = {/tikz}, } \def\tkzLegend{\pgfutil@ifnextchar[{\tkz@Legend}{\tkz@Legend[]}} diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex index 93b14350f92..6a9397171d7 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-utilities.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-utilities.tex} \makeatletter \pgfkeys{/tkzClip/.cd, space/.store in = {\tkz@CLI@space}, @@ -177,5 +177,60 @@ space = {}} \tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt} \tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2} \tkzSwapPoints(tkzpt,#3)} +%<---------------------------------------------------------–> +\def\tkzDotProduct(#1,#2,#3){% +\begingroup +\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}% +\tkz@ax\pgf@x% +\tkz@ay\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}} +\tkz@bx\pgf@x% +\tkz@by\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}% +\tkz@cx\pgf@x% +\tkz@cy\pgf@y% +\edef\tkz@dotprod{\fpeval{round(((\tkz@bx-\tkz@ax)*(\tkz@cx-\tkz@ax)+(\tkz@by-\tkz@ay)*(\tkz@cy-\tkz@ay))/(809.55841),5)}} +\global\let\tkzMathResult\tkz@dotprod +\endgroup} +%<---------------------------------------------------------–> + \def\tkzGetResult#1{% + \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}} +%<---------------------------------------------------------–> +% #1,#2 and #3 aligned +\def\tkzIsLinear(#1,#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#1,#2){tkz@la} +\tkz@@CalcLengthcm(#1,#3){tkz@lb} +\tkzDotProduct(#1,#2,#3) +\edef\tkzMathResult{\fpeval{abs(abs(\tkzMathResult)-(\tkz@la)*(\tkz@lb))}} +\ifdim \tkzMathResult pt < 0.0001 pt\relax% +\global\tkzLineartrue +\else +\global\tkzLinearfalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +% syntax : vec(#2,#1) ortho vec(#3,#1) +\def\tkzIsOrtho(#1,#2,#3){% +\begingroup +\tkzDotProduct(#1,#2,#3) +\edef\tkzMathResult{\fpeval{abs(\tkzMathResult)}} +\ifdim \tkzMathResult pt < 0.0001 pt\relax% +\global\tkzOrthotrue +\else +\global\tkzOrthofalse +\fi +\endgroup +} +%<---------------------------------------------------------–> + \def\tkzHelpGrid{% + \draw[help lines] (current bounding box.south west) grid + (current bounding box.north east); + } + \makeatother \endinput
\ No newline at end of file |