Beispiel #1
0
 /**
  * @param Point $a
  * @param Point $b
  *
  * @return Line
  */
 public static function combineToRisingLine(Point $a, Point $b)
 {
     $minX = min($a->getX(), $b->getX());
     $maxX = max($a->getX(), $b->getX());
     $minY = min($a->getY(), $b->getY());
     $maxY = max($a->getY(), $b->getY());
     return new self(new Point($minX, $minY), new Point($maxX, $maxY));
 }
Beispiel #2
0
 /**
  * @param Point $a
  * @param Point $b
  *
  * @return LinearFunction
  *
  * @throws \RuntimeException When $a and $b points have same x
  */
 public static function fromTwoPoints(Point $a, Point $b)
 {
     if ($a->getX() === $b->getX()) {
         throw new \RuntimeException('Line can be defined only by two points with different X');
     }
     $k = ($a->getY() - $b->getY()) / ($a->getX() - $b->getX());
     $n = $a->getY() - $k * $a->getX();
     return new self($k, $n);
 }
 /**
  * @param PointSet $result
  * @param Point    $a
  * @param Point    $b
  */
 private function addRow(PointSet $result, Point $a, Point $b)
 {
     if ($a->getX() > $b->getX()) {
         $t = $a;
         $a = $b;
         $b = $t;
     }
     if ($this->fill) {
         foreach ($a->forXUpTo($b) as $x) {
             $this->addPoint($result, new Point($x, $a->getY()));
         }
     } else {
         $this->addPoint($result, $a);
         $this->addPoint($result, $b);
     }
 }