(Conformal) mapping (iPad only)
Posted: Sat Jan 25, 2014 10:08 pm
' (conformal) mapping of a (x,y) domain into a (u,v) image.
' Paint in the upper window, the mapped image appears in the
' lower window.
' The mapping function u=u(x,y) and v=v(x,y) can be put in
' the "transform" function. Shown is a mapping which rotates
' the original 90 degrees and scales to 50%.
' Commented out is a conformal mapping of the complex (x,iy)
' domain into the ditto (u,iv) field. in this case the
' Youkowsky transform w=z+a^2/z is put in the function.
graphics ! graphics clear .8,.8,.8
fill color .8,.8,.8 ! draw color 0,0,0
xc=384 ! yc1=245 ! yc2=735 ! ww=380 ! hh=240
draw size 3
draw rect xc,yc1 size ww,hh ! draw rect xc,yc2 size ww,hh
draw size 2 ! draw color 0,0,.5
draw line 10,yc1 to 760,yc1 ! draw line xc,10 to xc,480
draw line 10,yc2 to 760,yc2 ! draw line xc,500 to xc,970
touch=0 ! button "c" title "clear" at 700,10 size 60,20
iter:
if button_pressed("c") then rcls
get touch 0 as xp,yp
if xp>=0 or yp>=0 then
if yp>485 then iter
transform(xp-xc,yp-yc1)
if touch then
draw line xo,yo to xp,yp
if vo>495 and v+yc2>495 then draw line uo,vo to .u+xc,.v+yc2
end if
xo=xp ! yo=yp ! uo=.u+xc ! vo=.v+yc2
touch =1
else
touch =0 ! pause .1
endif
goto iter
end
def transform(x,y)
.u = y/2
.v = -x/2
/*
z=x+y*1i ! w=z+900/z
.u=real(w) ! .v=imag(w)
*/
end def
def rcls
fill rect .xc,.yc1 size .ww-2,.hh-2
fill rect .xc,.yc2 size .ww-2,.hh-2
draw size 2 ! draw color 0,0,.5
draw line 10,.yc1 to 760,.yc1 ! draw line .xc,10 to .xc,480
draw line 10,.yc2 to 760,.yc2 ! draw line .xc,500 to .xc,970
end def
' Paint in the upper window, the mapped image appears in the
' lower window.
' The mapping function u=u(x,y) and v=v(x,y) can be put in
' the "transform" function. Shown is a mapping which rotates
' the original 90 degrees and scales to 50%.
' Commented out is a conformal mapping of the complex (x,iy)
' domain into the ditto (u,iv) field. in this case the
' Youkowsky transform w=z+a^2/z is put in the function.
graphics ! graphics clear .8,.8,.8
fill color .8,.8,.8 ! draw color 0,0,0
xc=384 ! yc1=245 ! yc2=735 ! ww=380 ! hh=240
draw size 3
draw rect xc,yc1 size ww,hh ! draw rect xc,yc2 size ww,hh
draw size 2 ! draw color 0,0,.5
draw line 10,yc1 to 760,yc1 ! draw line xc,10 to xc,480
draw line 10,yc2 to 760,yc2 ! draw line xc,500 to xc,970
touch=0 ! button "c" title "clear" at 700,10 size 60,20
iter:
if button_pressed("c") then rcls
get touch 0 as xp,yp
if xp>=0 or yp>=0 then
if yp>485 then iter
transform(xp-xc,yp-yc1)
if touch then
draw line xo,yo to xp,yp
if vo>495 and v+yc2>495 then draw line uo,vo to .u+xc,.v+yc2
end if
xo=xp ! yo=yp ! uo=.u+xc ! vo=.v+yc2
touch =1
else
touch =0 ! pause .1
endif
goto iter
end
def transform(x,y)
.u = y/2
.v = -x/2
/*
z=x+y*1i ! w=z+900/z
.u=real(w) ! .v=imag(w)
*/
end def
def rcls
fill rect .xc,.yc1 size .ww-2,.hh-2
fill rect .xc,.yc2 size .ww-2,.hh-2
draw size 2 ! draw color 0,0,.5
draw line 10,.yc1 to 760,.yc1 ! draw line .xc,10 to .xc,480
draw line 10,.yc2 to 760,.yc2 ! draw line .xc,500 to .xc,970
end def