求扇形内的坐标点,因为我要向这个扇形内放置图标,需要坐标来锁定图标的位置,所以必须求得扇形内的坐标点。或者哪位大神有更好的方法给赐教下~~~ 谢谢~~~
下边是我画扇形的方法,已知扇形所在圆圆心(x,y)坐标,扇形角度angle,扇形半径r,扇形开始边所在坐标系的度数startFrom,
private function drawSector(x:Number, y:Number, r:Number, angle:Number, startFrom:Number,color:uint):Sprite
{
var sector:Sprite=new Sprite();
sector.graphics.clear();
sector.graphics.beginFill(0xFFFFFF,0);//扇形填充颜色 , 及透明度
sector.graphics.lineStyle(1,color,1,true);//定义绘制扇形的线条粗细,及颜色
sector.graphics.moveTo(x,y); //当前绘画位置移动到 (x, y)。 --找到圆心位置
angle=(Math.abs(angle)>360)?360:angle;
var n:Number=Math.ceil(Math.abs(angle)/45);
var angleA:Number=angle/n;
angleA=angleA*Math.PI/180;
startFrom=startFrom*Math.PI/180;
sector.graphics.lineTo(x+r*Math.cos(startFrom),y+r*Math.sin(startFrom));//扇形的第一条开始边
for (var i=1; i<=n; i++) {
startFrom+=angleA;
var angleMid=startFrom-angleA/2;
var bx=x+r/Math.cos(angleA/2)*Math.cos(angleMid);
var by=y+r/Math.cos(angleA/2)*Math.sin(angleMid);
var cx=x+r*Math.cos(startFrom);
var cy=y+r*Math.sin(startFrom);
sector.graphics.curveTo(bx,by,cx,cy);
}
if (angle!=360) {
sector.graphics.lineTo(x,y);
}
sector.graphics.endFill();
return sector;
}
我的意思是:只要这个点在这个扇形内就可以,位置是随机的,所以这个扇形到圆心的距离也是随机的,只要比扇形的半径小就可以;所以有没有一个公式或者方法能求出这个扇形内的点的坐标集合;或者这样说吧:我现在要向画好的扇区里放5个图标,位置随机,只要在扇形内就OK,已知条件就是上边的,如何求解
追答随机也是没问题的。就是随机半径值,然后随机角度值,换算成xy坐标值。
如果要求图标不能超出扇形范围,那随机的值要在更小的一个范围内,即类似扇形内部要加一个边距。
您好,您的方法我试了,很不错,但是和我要的结果稍微有差别,但是这个思路是对的。
您这个最后得到的结果是无论angle的度数是多大,最后得到的坐标是这个扇区所在圆内的任一坐标,并非此圆内某一特定扇区的随机坐标。
还劳烦您再费下心,帮我看看,如何修改修改,让随机出来的是某一特定角度,特定扇形内的随机坐标,谢谢 ~~~~~~~~~
全部代码看附件