Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is a point inside regular hexagon

I'm looking for advice on the best way to proceed. I'm trying to find whether a given point A:(a, b) is inside a regular hexagon, defined with center O:(x, y) and diameter of circumscribing circle.

It seems like overkill to use Ray-casting, or Winding-number to determine this, for such a simple case, and I'm currently looking at the option of finding the angle (from horizontal) of the line OA, and "normalising" (probably not the right word) it into one of the 6 equilateral triangles and seeing if this new point lies within this triangle.

I get the feeling I'm missing something simple, and there's an easy way (or if I'm really lucky, a Java API) to do this simply and efficiently.

Thanks for your help.

Edit: The hexagon is oriented such that one of the sides is flat with the horizontal.

like image 702
Adam Avatar asked Mar 04 '11 11:03

Adam


People also ask

Does a hexagon have points?

In geometry, a hexagon can be defined as a closed two-dimensional polygon with six sides. Hexagon has 6 vertices and 6 angles also.

What defines a regular hexagon?

A regular hexagon is a closed shape polygon which has six equal sides and six equal angles. In case of any regular polygon, all its sides and angles are equal.

What are the properties of a regular hexagon?

Properties of a Regular Hexagon: It has six sides and six angles. Lengths of all the sides and the measurement of all the angles are equal. The total number of diagonals in a regular hexagon is 9. The sum of all interior angles is equal to 720 degrees, where each interior angle measures 120 degrees.


1 Answers

You can use the equations for each of the sides of the hexagon; with them you can find out if a given point is in the same half-plane as the center of the hexagon.

For example, the top-right side has the equation:

-sqrt(3)x - y + sqrt(3)/2 = 0

You plug in this the coordinates of the point and then the coordinates of the center. If the results have the same sign, then the point is in the bottom-left half-plane (so it may be inside the hexagon).

You then repeat by using the equations of the others sides.
Note that this algorithm will work for any convex polygon.

like image 196
Cosmin Avatar answered Sep 17 '22 20:09

Cosmin