我在Java中有以下方法:
public static Vector2d random(Circle circle) {
// this returns a random number between 0 and Math.PI * 2
double angle = MathUtils.random(0, Math.PI * 2);
// give the point inside the unit circle
// this returns a normalized vector from a given angle
Vector2d point = new Vector2d(angle);
// however, this is only along the edge
// now add a random magnitude (because this is a normalized vector, we can just multiply it by the desired magnitude)
double magnitude = Math.random();
point = point.multiply(magnitude);
// now expand this to fit the radius
point = point.multiply(circle.getRadius());
// now translate by circleCenter
return point.add(circle.getCenter());
}
这确实会在定义的圆圈中返回一个点,但是,当您多次执行此操作并绘制点时,您可以清楚地看到大多数点将朝向中心。
为什么是这样?我不明白我的数学怎么能做到这一点。
如果您希望我在情节上添加点的图像,请发表评论,如果您认为这可能会有所帮助。