
#include "2d.h"

point2d_t * translate(point2d_t *p, point2d_t by) {
   p->x += by.x;
   p->y += by.y;
   return p;
}

point2d_t * rotatez(point2d_t *p, double by) {
   double xtemp, ytemp;
   xtemp = (p->x * cos(by)) - (p->y * sin(by));
   ytemp = (p->x * sin(by)) + (p->y * cos(by));
   p->x = xtemp;
   p->y = ytemp;
   return p;
}

point2d_t * scale(point2d_t *p, point2d_t by) {
  p->x *= by.x;
  p->y *= by.y;
  return p;
}

line_t *initLine(line_t *l) {
  l->p1.x = 0;
  l->p1.y = 0;
  l->p2.x = 0;
  l->p2.y = 1;
  return l;
}

line_t *setLine(line_t *l, double x1, double y1, double x2, double y2) {
  l->p1.x = x1;
  l->p1.y = y1;
  l->p2.x = x2;
  l->p2.y = y2;
  return l;
}

line_t *transLine(line_t *l, point2d_t by) {
  translate(&l->p1, by);
  translate(&l->p2, by);
  return l;
}

line_t *rotLine(line_t *l, double by) {
  rotatez(&l->p1, by);
  rotatez(&l->p2, by);
  return l;
}

line_t *scaleLine(line_t *l, point2d_t by) {
  scale(&l->p1, by);
  scale(&l->p2, by);
  return l;
}







