/** * @param IPointGlobal $zeroPoint * @param IPointGlobal $endPoint * @param FieldConfiguration $config * @param float $width track width in meters */ public function __construct(IPointGlobal $zeroPoint, IPointGlobal $endPoint, FieldConfiguration $config, $width) { $this->zeroPoint = $zeroPoint->convertToLocal($config); $this->endPoint = $endPoint->convertToLocal($config); $diff = $this->endPoint->subtract($this->zeroPoint, $config); $this->factor = max(abs($diff->getLatitude()), abs($diff->getLongitude())); $this->vector = new LinearVector($diff); $absDiff = new LinearVector($endPoint->subtract($zeroPoint)); $this->cursor = new FieldCursor($this->zeroPoint, $absDiff->getPerpendicular(), $config, $width); }