fortpointuiguy - 1 year ago 141
ActionScript Question

# Flex/Actionscript Function to Calculate Random Point IN Circle

Not sure what I'm doing wrong here so I was looking to see if anyone had any thoughts or suggestions.
I'm trying to create a function that returns a random point WITHIN a circle.
The following code gives me random points along the edge of the circle.
Any thoughts on what I'm doing wrong here? Thanks!

``````private function getPointInCircle(tmpRadius:int):Point {
var x:int;
var y:int;

var a:Number = Math.random() * 360;
x = radius * Math.cos(a * (Math.PI / 180));
y = radius * Math.sin(a * (Math.PI / 180));

trace("x: " + x + "y: " + y);
return new Point(x, y);
}
``````

You need two degrees of freedom, one is the angle, which you had, and the other is the distance from the center:

``````var d:Number = Math.random()*radius
var a:Number = Math.random()*2*Math.PI;
x = d*Math.cos(a);
y = d*Math.sin(a);
``````

If you have your circle centered in `(x0,y0)` and not in `(0,0)` you modify like this:

``````x = x0 + d*Math.cos(a);
y = y0 + d*Math.sin(a);
``````

Trivia: The circle is just the border line. If you want to refer to the area delimited by the border, you say disk.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download