我需要为一个简单的凸多边形生成一组顶点,用动态规划对该多边形进行最小权三角测量,我考虑取一个半径为r的圆,然后取20个顶点逆时针,然后形成一个20个顶点凸多边形,但我如何做到这一点?
我怎么知道半径为r的圆上的顶点?
还有比这种方法更容易生成凸多边形顶点的方法吗?
任何帮助都非常感谢
发布于 2014-02-12 10:14:37
顺便说一下。+1代表那个圆圈的好方法.
N,则为
将随机步长设置为平均比2PI / N小一点,例如:
Da=a0+(A1*随机());- `a0=0.75*(2*M_PI/N)` ... minimal da
- `a1=0.40*(2*M_PI/N)` ... `a0+(0.5*a1)` is `avg = 0.95` ... is less then `2PI/N`内部添加中断,如果顶点计数达到N。如果在for之后顶点计数不是N,那么从一开始就重新计算所有,因为对于随机数,您不能接受总是这样命中N顶点!

PS.
如果圆形状不够好,也可以使用省略号。
x=x0+(rx*cos(a));
y=y0+(ry*sin(a));rx != ry发布于 2014-02-10 23:40:07
在0到2*pi之间生成20个随机数,并对它们进行排序。
现在使用一些基本的三角函数来转换成X,Y坐标。
for (int i = 0; i < 20; i++)
{
x = x0 + r*cos(angle[i]);
y = y0 + r*sin(angle[i]);
// ...
}发布于 2014-02-11 06:23:32
下面是一种灵活有效的凸多边形生成方法:-
如果按逆时针方向排列点,则在(x2,y2)点左转:-
int crosspro = (x3-x2)*(y2-y1) - (y3-y2)*(x2-x1)
if(crosspro>0) return(left_turn);
else return(right_turn);https://stackoverflow.com/questions/21690008
复制相似问题