Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: optical encoder

by moritz (Cardinal)
on Mar 16, 2012 at 08:59 UTC ( #959940=note: print w/ replies, xml ) Need Help??


in reply to optical encoder

Something like this should work (though I haven't tested it) with the current Rakudo Star release:

use v6; use SVG; my $r = 150 / 2; my @parts = :circle[ cx => $r, cy => $r, r => $r, stlye => 'fill:none; stroke: black; stroke-width: 1', ]; for 0, 2 ...^ 360 -> $degrees { my $rad = $degrees / 360 * 2 * pi; @parts.push: 'line' => [ x1 => $r, y1 => $r, x2 => $r + $r * cos($rad), y2 => $r + $r * sin($rad), ]; } say SVG.serialize: 'svg' => [ width => 2 * $r, height => 2 * $r, @parts, ];

Run it as

perl6 circle.pl > circle.svg

and scale to your desired size.


Comment on Re: optical encoder
Select or Download Code
Re^2: optical encoder
by jffry (Hermit) on Mar 16, 2012 at 17:07 UTC

    The SVG module seems to misspell the style attribute as "stlye".

    From the output:

    <svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2 +000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="150 " height="150"><circle cx="75" cy="75" r="75" stlye="fill:none; stroke +: black; stroke-width: 1" />

    Visio 2007 also doesn't recognize the xmlns:svg attribute, but I'm going to assume that is Visio's fault.

      The misspelling is right in the code I've posted, not in the module. In fact SVG.pm doesn't handle style specially in any way (though I've pondered it should).

      I've now actually tested the code, and this seems to work (the resulting SVG displays fine in firefox and inkscape).

      use v6; use SVG; my $r = 150 / 2; my @parts = :circle[ cx => $r, cy => $r, r => $r, style => 'fill:none; stroke: black; stroke-width: 1', ]; for 0, 2 ...^ 360 -> $degrees { my $rad = $degrees / 360 * 2 * pi; @parts.push: 'line' => [ x1 => $r, y1 => $r, x2 => $r + $r * cos($rad), y2 => $r + $r * sin($rad), style => 'stroke: black; stroke-width: 1', ]; } say SVG.serialize: 'svg' => [ width => 2 * $r, height => 2 * $r, @parts, ];

      As for the xmlns:svg declaration, that just means that the svg XML namespace is set up as being interpreted as SVG. This allows you (in theory) to do fun stuff like embedding <svg:rect ...> elements straight into XHTML. But even for browsers that support it, it is only supported if the document is delivered as application/xml+xhtml, which is generally no fun, because most IE versions don't render such documents, but offer them for download. </rant>

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://959940]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (7)
As of 2014-12-27 03:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls