public function ringSectorProvider() { $a1 = Angle::byDegrees(45); $a2 = Angle::byDegrees(135); $l1 = sin(\deg2rad(45)) * 100; $l2 = $l1 / 2; return array(array([[10 + $l1, 20 + $l1], [10 - $l1, 20 + $l1], [10 - $l2, 20 + $l2], [10 + $l2, 20 + $l2]], Points::ringSector(Point::create(10, 20), $a1, $a2, 100, 50)), array([[10 - $l1, 20 + $l1], [10 + $l1, 20 + $l1], [10 + $l2, 20 + $l2], [10 - $l2, 20 + $l2]], Points::ringSector(Point::create(10, 20), $a1, $a2, 100, 50, true))); }
/** * @dataProvider skewYProvider */ public function testSkewY($x, $y, $cx, $cy, $degrees, $expectedX, $expectedY) { $this->assertEqualCoordinates($expectedX, $expectedY, Point::create($x, $y)->skewY(Point::create($cx, $cy), Angle::byDegrees($degrees))); }
public static function rotated(Point $center, $n, $pointsArray, $ccw = false) { $points = new Points($center, false); $delta = deg2rad(360) / $n; $angle = Angle::create(0); for ($i = 0; $i < $n; $i++) { foreach ($pointsArray as $point) { $points->addPoint($point)->rotate($center, $angle); } $angle->add($delta); } $points->reverseIfCcw($ccw); return $points; }