幸运的是,八边形是一种相对简单的形状,因为这些线是八角形或 45 度对角线。所以你不需要更复杂的计算。对于一个直角三角形和两条边的长度 Y 相同的三角形,该三角形的斜边的长度为 Y * sqrt(2)。
那个假设是你的 X 边,所以 Y = X / sqrt(2)。
1000多字的图片:

所以你可以为你想要的长度 X 计算 Y,从那里它只是加法和减法来获得所有坐标。
小智 5
假设一个以原点为中心的正八边形,则起点位于
\n\n(x, y) = (r cos(t), r sin(t))\nRun Code Online (Sandbox Code Playgroud)\n\n其中t是起始角和r外接圆的半径。\n你可以通过转换为极坐标来找到它们,
r = \xe2\x88\x9ax\xc2\xb2+y\xc2\xb2, tan(t) = y/x\nRun Code Online (Sandbox Code Playgroud)\n\n但这是不必要的。
\n\n其他顶点位于
\n\n(x, y) = (r cos(t + k \xcf\x80/4), r sin(t + k \xcf\x80/4))\nRun Code Online (Sandbox Code Playgroud)\n\n可以通过角加法公式来简化公式。例如,对于第二个顶点
\n\n(r (cos(t) - sin(t))/\xe2\x88\x9a2, r (sin(t) + cos(t))/\xe2\x88\x9a2) = ((x - y)/\xe2\x88\x9a2, (x + y)/\xe2\x88\x9a2)\nRun Code Online (Sandbox Code Playgroud)\n\n对于第三个
\n\n(r (-sin(t)), r cos(t)) = (-y, x)\nRun Code Online (Sandbox Code Playgroud)\n