为我提供了一个2D坐标点的列表,这些坐标是多边形的顶点。我应该在多边形板上放置随机创建的多边形,以免它们相互碰撞。
作为随机函数的上下限,我找到了给定点的边界矩形框。 (我只是找到这个来指定随机生成器函数的边界。)
在这里,我假设所有随机多边形都是矩形。然后,我在每一步随机创建8个点,它们代表一个矩形的顶点: (x1,y1,x2,y2,x3,y3,x4,y4)
现在要知道是否:
我要使用碰撞检测算法,该算法基于分离轴定理,并在here中进行了说明。
var rand = new Random();
var numbers = new List<int>(); // A sample of one of the rectangles
numbers.Add(rand.Next(0, 100)); // x1
numbers.Add(rand.Next(0, 100)); // y1
numbers.Add(numbers[0] + rand.Next(1, 10)); //x3
numbers.Add(numbers[1] + rand.Next(1, 10)); //y3
numbers.Add(numbers[0]); // x4
numbers.Add(numbers[3]); // y4
numbers.Add(numbers[2]); // x2
numbers.Add(numbers[1]); // y2
var numbers2 = new List<int>(); // We assume that this is the given
//original polygon board
numbers2.Add(rand.Next(70, 200)); // x1
numbers2.Add(rand.Next(70, 200)); // y1
numbers2.Add(numbers2[0] + rand.Next(1, 10)); //x3
numbers2.Add(numbers2[1] + rand.Next(1, 10)); //y3
numbers2.Add(numbers2[0]); // x4
numbers2.Add(numbers2[3]); // y4
numbers2.Add(numbers2[2]); // x2
numbers2.Add(numbers2[1]); // y2
现在,让我们忘记循环遍历先前放置的矩形并进行检查。我只想知道:
如何在每两个2D点(代表矩形的一面)之间定义一条连接线,然后找到与其垂直的线? (我在控制台应用程序中)。
point1 =(x1,y1),point2 =(x2,y2)依此类推。另外,point1应该是 连接到point2,point2连接到point3,依此类推,最后一个连接到 再次指向point1。
如何在垂直线上投影每个矩形各边的所有点?
或者如果有一种完全不同的方法来解决此问题,那会更容易:)