コード例 #1
0
 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]);
 }