math.affine-transforms: some docs for the vocab

windows-high-dpi
Björn Lindqvist 2018-02-25 15:11:59 +01:00
parent 5098628f57
commit b672ed91fb
3 changed files with 32 additions and 5 deletions

View File

@ -0,0 +1,21 @@
! Copyright (C) 2018 Björn Lindqvist
! See http://factorcode.org/license.txt for BSD license
USING: help.markup help.syntax ;
IN: math.affine-transforms
ARTICLE: "math.affine-transforms" "Affine Transformations of 2d Vectors"
"This vocab provides words for affine transformations of 2d vectors. It can sometimes be more suitable to use the words in this vocab, than setting up the affine transformation matrices manually."
{ $examples
"Creates a 45 degree counter clock-wise rotation matrix and applies it to a vector:"
{ $example
"USING: math.affine-transforms math.trig prettyprint ;\n45 deg>rad <rotation> { 0 4 } a.v ."
"{ -2.82842712474619 2.82842712474619 }"
}
"Applies a combined scaling and translation transform to a vector:"
{ $example
"USING: math.affine-transforms math.trig prettyprint ;\n{ 0 -5 } <translation> 1 2 <scale> a. { 4 3 } a.v ."
"{ 4.0 1.0 }"
}
} ;
ABOUT: "math.affine-transforms"

View File

@ -1,12 +1,16 @@
! (c)2009 Joe Groff, see BSD license
USING: accessors arrays combinators combinators.short-circuit kernel math math.vectors
math.functions sequences ;
USING: accessors arrays combinators combinators.short-circuit kernel
math math.functions math.vectors sequences ;
IN: math.affine-transforms
TUPLE: affine-transform { x read-only } { y read-only } { origin read-only } ;
TUPLE: affine-transform
{ x read-only }
{ y read-only }
{ origin read-only } ;
C: <affine-transform> affine-transform
CONSTANT: identity-transform T{ affine-transform f { 1.0 0.0 } { 0.0 1.0 } { 0.0 0.0 } }
CONSTANT: identity-transform T{ affine-transform f
{ 1.0 0.0 } { 0.0 1.0 } { 0.0 0.0 } }
: axes ( a -- a' )
[ x>> ] [ y>> ] bi { 0.0 0.0 } <affine-transform> ;
@ -28,7 +32,8 @@ CONSTANT: identity-transform T{ affine-transform f { 1.0 0.0 } { 0.0 1.0 } { 0.0
[ 0.0 2array ] [ 0.0 swap 2array ] bi* { 0.0 0.0 } <affine-transform> ;
: center-rotation ( transform center -- transform )
[ [ x>> ] [ y>> ] [ ] tri ] dip [ vneg a.v ] [ v+ ] bi <affine-transform> ;
[ [ x>> ] [ y>> ] [ ] tri ] dip [ vneg a.v ] [ v+ ] bi
<affine-transform> ;
: flatten-transform ( transform -- array )
[ x>> ] [ y>> ] [ origin>> ] tri 3append ;

View File

@ -1 +1,2 @@
graphics
math