Math 给定角度和半径的正多边形轮廓上点的公式
我正在寻找一个公式来计算给定角度和半径的正多边形(例如八角形)轮廓上的点。我可以使用三角法计算多边形的顶点,并使用线/线交点获得轮廓上的点,但这感觉有点笨拙。有没有一个简单的公式可以给出相同的结果?首先,我假设多边形的方向是第一个平面在其右侧垂直。角度是相对于x轴测量的,我们希望找到光线和多边形的交点,如下所示: 我们得到多边形的边数和边数。如果你有外接圆,维基百科页面包含一个公式来推导它们的外接圆。如果多边形已旋转,只需从查询角度添加或减去旋转角度即可 第一步是找到光线相交的边。由于多边形是规则的,因此只需通过分割和舍入即可。我把相应的边角叫做边角。上面五边形的右侧有侧角0,下一个有72°,以此类推Math 给定角度和半径的正多边形轮廓上点的公式,math,Math,我正在寻找一个公式来计算给定角度和半径的正多边形(例如八角形)轮廓上的点。我可以使用三角法计算多边形的顶点,并使用线/线交点获得轮廓上的点,但这感觉有点笨拙。有没有一个简单的公式可以给出相同的结果?首先,我假设多边形的方向是第一个平面在其右侧垂直。角度是相对于x轴测量的,我们希望找到光线和多边形的交点,如下所示: 我们得到多边形的边数和边数。如果你有外接圆,维基百科页面包含一个公式来推导它们的外接圆。如果多边形已旋转,只需从查询角度添加或减去旋转角度即可 第一步是找到光线相交的边。由于多边形是
sectorAngle = 2 * PI / sides
sideAngle = sectorAngle * round(angle / sectorAngle)
给定此边角,我们可以计算查询光线的剩余角和边的垂直平分线:
请注意,此角度是有符号的
现在我们只需要在旋转坐标系中重建点,其中平分线是一个轴,垂直方向是另一个轴。我们需要沿着平分线走一段距离等于它们的顶点。我们需要垂直行走的距离是:
sideward = apothem * tan(diffAngle)
我们可以用这个来说明我们的观点:
sideNormalX = cos(sideAngle)
sideNormalY = sin(sideAngle)
pointX = centerX + sideNormalX * apothem - sideNormalY * sideward
pointY = centerY + sideNormalY * apothem + sideNormalX * sideward
下面是一个JavaScript实现:
window.onload=function(){
canvas=document.getElementById('cnv');
ctx=canvas.getContext('2d');
var-pts=100;
对于(变量i=0;i
穿过两点的直线的极坐标(x_1,y_1)
和(x_2,y_2)
为
radius = (x_2*y_1 - x_1*y_2)/( (x_2-x_1)*cos(angle) - (y_2-y_1)*sin(angle) )
其中,角度
从atan(y\u 1/x\u 1)
扫描到atan(y\u 2/x\u 2)
所以你所要做的就是把一个圆分成n
段,然后找到每个顶点的(x,y)
坐标。然后用上面的公式拟合两个连续顶点之间的直线
下面是使用此技术的示例
听起来像是这个网站的一个问题:您的要求不明确。你给出了什么“角度”?您是否还指定了多边形的边数及其方向?您需要正多边形的极坐标。这是正确的吗?
radius = (x_2*y_1 - x_1*y_2)/( (x_2-x_1)*cos(angle) - (y_2-y_1)*sin(angle) )