如何获取区域边缘的随机点?

问题描述 投票:0回答:1

我有一个城市建设游戏,并且已经完成了玩家的工作,玩家可以手动选择放置东西的位置。我还没有完成人工智能,它应该在其领土的边缘或内部生成一个点(一个区域对象)。

这是我正在研究的方法:

public Point getBuildPoint(){
        Random rand = gp.rand;

        int x = -1;
        int y = -1;

        if(currentState == expandState){
            //get point on the edge of the territory

        }else{
            //get point within the territory

        }
        //snap to grid
        x = Math.round((float) x / gp.tileSize)*gp.tileSize;
        y = Math.round((float) y / gp.tileSize)*gp.tileSize;

        return new Point(x, y);
    }

我研究了使用 PathIterator 对象,但没有发现任何有用的东西。

编辑:如何在多边形区域(由矩形组成)的随机线段上选择一个点?

java math random geometry area
1个回答
0
投票

假设我们在点 A(x1,y1) 和 B(x2,y2) 之间有一条 线段。我们试图得到直线上的点 C(x3,y3) 。我们可以有一个 scale 数字,我将其称为“scale”。比例在 0 到 1 之间 0 最接近 A 1 最接近 B。我们可以通过以下等式得到直线上的点:

x3 = x1 + (x2-x1)*比例

y3 = y1 + (y2-y1)*比例

© www.soinside.com 2019 - 2024. All rights reserved.