function testPointAngleSearch() { $testSpine = new WMSpine(); $testSpine->addPoint(new WMPoint(50, 50)); $testSpine->addPoint(new WMPoint(150, 50)); $testSpine->addPoint(new WMPoint(150, 150)); $testSpine->addPoint(new WMPoint(0, 150)); $testSpine->addPoint(new WMPoint(0, 0)); $testSpine->addPoint(new WMPoint(100, 100)); /* \ |\ | \ | \ | \ | E | \ | \ | v | | ------B--A | | | C | | | | | | | | | | |-------------D----------' **/ // A $result = $testSpine->findPointAndAngleAtDistance(100); $this->assertTrue($result[0]->identical(new WMPoint(150, 50))); // B $result = $testSpine->findPointAndAngleAtDistance(90); $this->assertTrue($result[0]->identical(new WMPoint(140, 50))); $this->assertEquals(0, $result[2]); //C $result = $testSpine->findPointAndAngleAtDistance(110); $this->assertTrue($result[0]->identical(new WMPoint(150, 60))); $this->assertEquals(-90, $result[2]); // D $result = $testSpine->findPointAndAngleAtDistance(300); $this->assertTrue($result[0]->identical(new WMPoint(50, 150))); $this->assertEquals(180, $result[2]); // E $result = $testSpine->findPointAndAngleAtDistance(550); $this->assertEquals(-45, $result[2]); }