
#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;
   double cosTheta, sinTheta;
   cosTheta = cos(by);
   sinTheta = sin(by);
   xtemp =             (p->x * cosTheta) - (p->y * sinTheta);
 /*ytemp =*/ p->y =    (p->x * sinTheta) + (p->y * cosTheta);
   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 = 1;
  l->p2.y = 0;
  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;
}







