[latex3-commits] [git/LaTeX3-latex3-latex3] master: Correct distance-along-line interpolation (eade85e)

Joseph Wright joseph.wright at morningstar2.co.uk
Mon Feb 26 08:26:02 CET 2018


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/eade85e6890970630765814b92891e1b77a19bee

>---------------------------------------------------------------

commit eade85e6890970630765814b92891e1b77a19bee
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Mon Feb 26 07:24:21 2018 +0000

    Correct distance-along-line interpolation


>---------------------------------------------------------------

eade85e6890970630765814b92891e1b77a19bee
 l3experimental/l3draw/l3draw-points.dtx       |   40 ++++++++++---------------
 l3experimental/l3draw/testfiles/m3draw001.tlg |    4 +--
 2 files changed, 18 insertions(+), 26 deletions(-)

diff --git a/l3experimental/l3draw/l3draw-points.dtx b/l3experimental/l3draw/l3draw-points.dtx
index 0149799..a14b31f 100644
--- a/l3experimental/l3draw/l3draw-points.dtx
+++ b/l3experimental/l3draw/l3draw-points.dtx
@@ -485,39 +485,31 @@
 % \begin{macro}[EXP]{\@@_point_interpolate_distance:nnnnn}
 % \begin{macro}[EXP]
 %   {
-%     \@@_point_interpolate_distance_aux:nnnnnnn,
-%     \@@_point_interpolate_distance_aux:nnnnnnn,
-%   }
-% \begin{macro}[EXP]
-%   {
-%     \@@_point_interpolate_distance_aux:nnnnnn,
-%     \@@_point_interpolate_distance_aux:fnnnnn,
+%     \@@_point_interpolate_distance:nnnnnn,
+%     \@@_point_interpolate_distance:fnnnnn,
 %   }
 %   Same idea but using the normalised length to obtain the scale factor.
+%   The start point is needed twice, so we force evaluation, but the end
+%   point is needed only the once.
 %    \begin{macrocode}
 \cs_new:Npn \draw_point_interpolate_distance:nnn #1#2#3
   {
-    \@@_point_process:nnn
-      { \@@_point_interpolate_distance:nnnnn {#1} }
-      {#2} {#3}
-  }
-\cs_new:Npn \@@_point_interpolate_distance:nnnnn #1#2#3#4#5
-  {
-    \@@_point_interpolate_distance_aux:nnnnnnn
-      { \fp_eval:n { #4 - #2 } }
-      { \fp_eval:n { #5 - #3 } }
-      {#2} {#3} {#4} {#5} {#1}
+    \@@_point_process:nn
+      { \@@_point_interpolate_distance:nnnn {#1} {#3} }
+      {#2}
   }
-\cs_new:Npn \@@_point_interpolate_distance_aux:nnnnnnn #1#2#3#4#5#6#7
+\cs_new:Npn \@@_point_interpolate_distance:nnnn #1#2#3#4
   {
-    \@@_point_interpolate_distance_aux:fnnnn
-      { \fp_eval:n { (#7) / (sqrt ( #1 * #1 + #2 * #2 )) } }
-      {#3} {#4} {#5} {#6}
+    \@@_point_process:nn
+      {
+        \@@_point_interpolate_distance:fnnnn
+          { \fp_eval:n {#1} } {#3} {#4}
+      }
+      { \draw_point_unit_vector:n { ( #2 ) - ( #3 , #4 ) } }
   }
-\cs_generate_variant:Nn \@@_point_interpolate_distance_aux:nnnnnnn { ff }
-\cs_new:Npn \@@_point_interpolate_distance_aux:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_point_interpolate_distance:nnnnn #1#2#3#4#5
   { \@@_point_to_dim:n { #2 + #1 * #4 , #3 + #1 * #5 } }
-\cs_generate_variant:Nn \@@_point_interpolate_distance_aux:nnnnn { f }
+\cs_generate_variant:Nn \@@_point_interpolate_distance:nnnnn { f }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
diff --git a/l3experimental/l3draw/testfiles/m3draw001.tlg b/l3experimental/l3draw/testfiles/m3draw001.tlg
index d9e5a05..23e07e7 100644
--- a/l3experimental/l3draw/testfiles/m3draw001.tlg
+++ b/l3experimental/l3draw/testfiles/m3draw001.tlg
@@ -58,8 +58,8 @@ TEST 9: \draw_point_interpolate_line:nnn
 ============================================================
 TEST 10: \draw_point_interpolate_distance:nnn 
 ============================================================
-1.414213562373095pt,30.57407913262214pt
-56.905517578125pt,86.41893653896732pt
+1.414213562373095pt,29.8669723514356pt
+54.78419723456536pt,83.23695602362786pt
 ============================================================
 ============================================================
 TEST 11: \draw_point_interpolate_arcaxes:nnnnnn 





More information about the latex3-commits mailing list