Here after a struggle are my linrot results.

   NB. rotate a line in the plane about a point in the plane

   NB. here points are complex numbers

   NB. below start and direction are complex numbers, could be vectors

   NB. (start,direction) line t  is  start + t * direction

   line =: 1 : '({. m) + ({: m) * ]'

   mab =: 1 : '( (u 0) , (% 9&o.) (u 1) - u 0 ) line' NB. point slope
version of u

   NB. below u rot (theta,center) rotates results of u by theta radians
about the center
   NB. it is assumed the results of u and the center are complex numbers

   rot =: 2 : '[: r.&({. n)&.(({: n) -~ ]) u'

   ff =: 0j1 1j1 line        NB. line starts at 0j1 goes in direction of 1j1

   ff"0 [ 0 1 2              NB. Notice y = x + 1
0j1 1j2 2j3

   gg =: ff rot _1r4p1 0j1   NB. rotates ff results 45 degees clockwise
about 0j1

   gg"0 [ 0 1 2              NB. horizontal (y's are all 1)
0j1 1.414213562j1 2.828427125j1

   (gg mab)"0 [ 0 1 2.       NB. results x j. y from point slope y = 1 +
0*(x - 0)
0j1 1j1 2j1

--Kip

On Thursday, February 18, 2016, Louis de Forcrand <[email protected]> wrote:

> To continue with the rotation challenges, write a verb that rotates a
> linear
> polynomial (coeffs in x) by 0 {:: y with a centre of 1 {:: y:
>
>    1 2 linrot 1p1 ; 0 1
> 1 2
>    1 2 linrot 1r2p1 ; 0 1
> 1 _0.5
>    1 2 linrot 1p1;1 1
> _3 2
>
> My take:
> linrot=: ({: %. 1 ,. {.)@rotposmat
>  rotposmat=: centre + j./@posmat |:@:+.@:* r.@angle
>   centre=: 1&({::)@]
>   posmat=: (] ,: p.)&0 1@[ - centre
>   angle=: 0&({::)@]
>
> It uses matrix division on a rotated set of two points from the original
> polynomial. Not very elegant, but I’m pretty sure it works.
>
> Best regards,
> Louis
>
> > On 17 Feb 2016, at 06:40, Kip Murray <[email protected]
> <javascript:;>> wrote:
> >
> > Not bad.  I didn't know about r.  .  For clean I use
> >
> > clean =: (* *!.1e_14@|)"0&.+.
> >
> > --Kip
> >
> > On Tuesday, February 16, 2016, Raul Miller <[email protected]
> <javascript:;> <mailto:[email protected] <javascript:;>>> wrote:
> >
> >> Well...
> >>
> >>   rottheta=: (rot~ r.)~
> >>   1r2p1 rottheta 3 4
> >> _4 3
> >>   1r4p1 rottheta _1 1
> >> _1.41421 1.11022e_16
> >>
> >> I remember there being a concise phrase to clean irrelevant bits near
> >> zero in a complex number, but I can't remember what I need to search
> >> on to find it, and my foggy memory of how to write it is failing me at
> >> the moment.
> >>
> >> Still, this gets you close.
> >>
> >> --
> >> Raul
> >>
> >>
> >> On Tue, Feb 16, 2016 at 11:50 PM, Kip Murray <[email protected]
> <javascript:;>
> >> <javascript:;>> wrote:
> >>> I'm retired with time to "fool around".  Finding an old rot90 verb that
> >>> used multiplication by a 2 by 2 matrix, I sought a more direct way
> using
> >>> complex numbers and found one of the solutions that was posted.  I also
> >>> learned a lot from the other solutions posted, thanks everyone!
> >>>
> >>> New puzzle: find a complex analysis way to do a rotation given its
> angle
> >> in
> >>> radians, examples:
> >>>
> >>>    1r2p1 rottheta 3 4
> >>> _4 3
> >>>
> >>>    1r4p1 rottheta _1 1
> >>> _1.414213562 0
> >>>
> >>> --Kip
> >>>
> >>> I'm also a former math professor!
> >>>
> >>> On Tuesday, February 16, 2016, David Lambert <[email protected]
> <javascript:;>
> >> <javascript:;>> wrote:
> >>>
> >>>>
> >>>> what's your agenda, are you writing a book? Isn't there a homogeneous
> >>>> coordinate system/transformation lab?
> >>>>
> >>>>>
> >>>>> On 02/16/2016 06:16 PM, [email protected]
> <javascript:;>
> >> <javascript:;> wrote:
> >>>>>
> >>>>>> Date: Tue, 16 Feb 2016 15:18:43 -0600
> >>>>>> From: Kip Murray<[email protected] <javascript:;>
> <javascript:;>>
> >>>>>> To:"[email protected] <javascript:;> <javascript:;>" <
> >> [email protected] <javascript:;> <javascript:;>>
> >>>>>> Subject: [Jprogramming] A plane rotation
> >>>>>> Message-ID:
> >>>>>>    <
> >> caofworgvydb1nmjwxkb0wosyfnlubxcdz20sv11uksfcfay...@mail.gmail.com
> <javascript:;>
> >> <javascript:;>>
> >>>>>> Content-Type: text/plain; charset=UTF-8
> >>>>>>
> >>>>>> Fairly easy: write a verb that rotates a point in the plane by the
> >> angle
> >>>>>> of
> >>>>>> a given complex number.  For example
> >>>>>>
> >>>>>>     1j1 rot 1 1  NB. Rotate 1 1 counterclockwise 45 degrees
> >>>>>>  0 1.414213562
> >>>>>>
> >>>>>> Background information:  when you multiply two complex numbers the
> >>>>>> magnitudes are multiplied and the angles are added.
> >>>>>>
> >>>>>> --Kip Murray
> >>>>>>
> >>>>>>
> >>>>>
> >>>> ----------------------------------------------------------------------
> >>>> For information about J forums see
> http://www.jsoftware.com/forums.htm
> >>>
> >>>
> >>>
> >>> --
> >>> Sent from Gmail Mobile
> >>> ----------------------------------------------------------------------
> >>> For information about J forums see http://www.jsoftware.com/forums.htm
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >
> >
> >
> > --
> > Sent from Gmail Mobile
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm <
> http://www.jsoftware.com/forums.htm>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm



-- 
Sent from Gmail Mobile
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to