Help language development. Donate to The Perl Foundation

Math::Polygons zef:librasteve last updated on 2023-06-02

1e4b96de5d425a69dd1540e4ae0e14a87f14fae0/

raku-Math-Polygons

Some polygon objects that draw via SVG - an alpha with the potential to do inheritance of Parallelograms, Rhomboids, etc.

Build Status

Instructions

There are three ways to consume this module: 1. Jupyter Notebook local - Clone this repo locally on your machine - Do the Quick Start here Brian Duggan perl6 jupyter-notebook at https://github.com/bduggan/p6-jupyter-kernel - From the root directory run jupyter-notebook 2. Jupyter Notebook hosted on Binder - Click this badge => Binder - Go to /eg and click Polygons.ipynb, then Run - If you are the first to build e.g. a new version this can take 24 mins or so and the Binder browser UI may lose hope - please just be patient (do not reload as this restarts the build) - If not, go to and paste this url https://github.com/librasteve/perl6-Math-Polygons, then the ./Dockerfile will be used to (re)build and run on Jupyter at Binder 3. Perl6 Module - zef install Math::Polygons

Synopsis

use Math::Polygons;

my $rectangle = Rectangle.new( 
    origin => Point.new(20, 20),
    width  => 120, 
    height => 80  
);

my $square = Square.new( 
    origin => Point.new(170, 20),
    side   => 100 
);

my \A = Point.new( 20, 260);
my \B = Point.new( 30, 200);
my \C = Point.new(120, 145);
my \D = Point.new(125, 250);
my $quadrilateral = Quadrilateral.new(
    A, B, C, D,  
);

my $triangle = Triangle.new(
    fill => "green",
    stroke => "black",
    apex => Point.new(220, 160),
    side => 100 
);

my $drawing = Drawing.new( 
    elements => [ 
        $rectangle, 
        $square,
        $quadrilateral,
        $triangle,
    ],
);
$drawing.serialize.say;

Inspired by