关于js的数学算法题?
如下图所示在这个区域存在这样一个内切圆
给定不定个数(>=3)个点,这些点必须构成正多边形,如何求这些点的坐标?
并且在这个正多边形构成的圆上,在给定不定个数(>=3)个点,这些点必须构成正多边形,如何求这些点的坐标?再次重复
如何得到这三次给定点的坐标?
哪位大佬知道如何用js实现这个过程吗?
这里有个参考公式,正多边形内切圆的半径公式
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
先说第一个正N边形
将圆心和多边形的各顶点相连,得到N个角度为A(A = 2π / N)的扇形。将其中一个扇形的左端置于圆的最高点,得坐标(r,2r)。顺时针看,该扇形的另一端为第二个点,可根据半径r及角度A,配合勾股定理算出坐标(r + rsinA, r + rcosA ),下一个以此类推(r + rsin2A, r + rcos2A)。算完右半边可以镜像得左半边
第二个正N边形的计算方案与第一个一样,唯二变化的是半径(这个根据你给的公式可以算)和上下留空,算y轴坐标的时候注意下就可以了
这个问题描述是不清楚的,比如第一个问题,这里正多边形上的N个点是在定点位置还是边上任意一点(包括顶点),这里的要求是不同的,如果要求是顶点上,则这些点其实都属于某个圆上的点,则先找一个圆心和半径,再根据不同正多边形对应扇面角度可以很快确定相应点(以某个点为起始,其实是存在无穷可能的),如果是后一种情况,则会更复杂,但其实也可以用相应办法先确定正多边形(同时就确定了各个边),再抽取相应数量的点。
注意你的要求是给出相应的点的一个解,而并不是具体唯一的解(本身就有无穷解)