From e645990eed09a413fab17a3398f8bda28af3f19a Mon Sep 17 00:00:00 2001 From: Alexander Iljin Date: Fri, 13 Jan 2017 23:29:08 +0300 Subject: [PATCH] charts.lines: add calc-x --- lines/lines-tests.factor | 4 ++++ lines/lines.factor | 1 + 2 files changed, 5 insertions(+) diff --git a/lines/lines-tests.factor b/lines/lines-tests.factor index 907cfa495e..64e6eb0a7b 100644 --- a/lines/lines-tests.factor +++ b/lines/lines-tests.factor @@ -12,6 +12,10 @@ IN: charts.lines.tests { 3 } [ 1 { 1 3 } { -2 5 } y-at ] unit-test { 1 } [ 4 { -2 5 } { 1 3 } y-at ] unit-test { 0.0 } [ 5.5 { -2 5 } { 1 3 } y-at ] unit-test +{ 1 } [ -2/3 3 { 1 3 } calc-x ] unit-test +{ -2 } [ -2/3 5 { 1 3 } calc-x ] unit-test +{ 1 } [ -2/3 3 { -2 5 } calc-x ] unit-test +{ -2 } [ -2/3 5 { -2 5 } calc-x ] unit-test { 2 3 } [ { 1 2 3 } last2 ] unit-test { 1 2 } [ { 1 2 } last2 ] unit-test diff --git a/lines/lines.factor b/lines/lines.factor index b703607edb..7dd288944b 100644 --- a/lines/lines.factor +++ b/lines/lines.factor @@ -63,6 +63,7 @@ TUPLE: line < gadget color data ; : calc-line-slope ( point1 point2 -- slope ) v- first2 swap / ; : calc-y ( slope x point -- y ) first2 [ - * ] dip + ; +: calc-x ( slope y point -- x ) first2 swap [ - swap / ] dip + ; : y-at ( x point1 point2 -- y ) dupd calc-line-slope -rot calc-y ; : last2 ( seq -- penultimate ultimate ) 2 tail* first2 ;