#include <math.h>

#define pt(X,Y) ((point2d_t){X,Y})

typedef struct point2d_s {
  double x, y;
} point2d_t;

typedef struct line_s {
  point2d_t p1;
  point2d_t p2;
} line_t;

point2d_t * translate(point2d_t *p, point2d_t by) ;
point2d_t * rotatez(point2d_t *p, double by) ;
point2d_t * scale(point2d_t *p, point2d_t by) ;
line_t    * initLine(line_t *l) ;
line_t    * setLine(line_t *l, double x1, double y1, double x2, double y2) ;
line_t    * transLine(line_t *l, point2d_t by) ;
line_t    * rotLine(line_t *l, double by) ;
line_t    * scaleLine(line_t *l, point2d_t by) ;

