2

I am trying to find the vertices of a regular polygon using just the number of sides and 2 vertices. After the second vertex, I will make left turns to find each subsequent vertex that follows.

For example, If I have 4 sides, and 2 points, (0,0) & (0,10), how would I go about find the next to point of the square? I know the points would be (10,10) and then (10,0), but I can't think of a formula to accomplish this.

Thank you for any help, and I hope I provided enough information.

1 Answers1

1

For simplicity I am assuming the centre of the polygon is origin.

If two consecutive vertices are given then the angle they make at origin can be found. Call it $\theta=2\pi/n$. Now all points are obtainable from any single point by rotating repeatedly by this angle (centred at origin). As rotation is a linear transformation, this can be achieved by matrix multiplication $$ R_\theta=\pmatrix{\cos\theta & -\sin\theta\cr \sin\theta &\cos\theta\cr}$$ Write the co-ordinates of a vertex of the polygon as a column vector $v_1=\displaystyle {x_1\choose y_1}$. Matrix multiplication $v_2=R_\theta v_1, v_3=R_\theta v_2$ etc will give the co-ordinates of all the vertices.

  • How does this change if it is not centered at the origin? – user2587878 May 05 '15 at 05:59
  • If the centre is the point (vector) $v_0$ subtract it from given two points (vectors), and appeal to the known case and find the other vertices. Now add the vertex $v_0$ to all the vertices you calculated. – P Vanchinathan May 05 '15 at 06:03
  • My issues so far are, I don't know what the center is, so how do I do that? Also, with your solution, if

    v1 = (x1 y1), where x1 and y1 are both 0, how does that not give every subsequent v as a zero?

    – user2587878 May 05 '15 at 06:23
  • If you do not know the centre, the solution is not unique. Look at the flooring with square tiles. Two consecutive vertices can be thought of as belonging to two different squares (those lying on either sides of the side joining them). – P Vanchinathan May 05 '15 at 06:39
  • I found how to find both centers, and I already wrote code to deside if the points go counter clockwise. However, I still don't understand your formula. If my initial point is (0,0), won't that give me the same answer for every point with matrix multiplication? Edit: nvm, just realized after I subtract the center it will never happen I think. Thank you. – user2587878 May 05 '15 at 06:41
  • The centre lies at the perpendicular bisector of the side (on either sides). The distance of the centre from the mid-point of the known side is $s/2\tan(\pi/n)$ with $s$ the known side length. – P Vanchinathan May 05 '15 at 06:48