You are here

function farm_area_generate_rotate_polygon in farmOS 7

Rotate a polygon around an origin.

Parameters

$polygon: A Polygon geometry object.

$origin: An origin point to rotate around.

$angle: The angle of rotation, in degrees.

Return value

\Polygon Returns a Polygon geometry object that has been rotated around an origin.

1 call to farm_area_generate_rotate_polygon()
farm_area_generate_geometries in modules/farm/farm_area/farm_area_generate/farm_area_generate.module
Generate geometries within a polygon at a given orientation.

File

modules/farm/farm_area/farm_area_generate/farm_area_generate.module, line 505
Farm area generate module.

Code

function farm_area_generate_rotate_polygon($polygon, $origin, $angle) {

  // Load GeoPHP.
  geophp_load();

  // If the geometry is not a polygon, bail.
  if ($polygon
    ->geometryType() != 'Polygon' || $polygon->components[0]
    ->geometryType() != 'LineString') {
    return $polygon;
  }

  // Iterate through the polygon's points, and rotate each around the origin.
  $linestring = $polygon->components[0];
  $new_points = array();
  if (!empty($linestring->components)) {
    foreach ($linestring->components as $point) {
      $new_points[] = farm_area_generate_rotate_point($point, $origin, $angle);
    }
  }

  // Return a new Polygon object.
  return new Polygon(array(
    new LineString($new_points),
  ));
}