Tag: 计算几何

获取多面体的表面区域(3D对象)

我有一个3D表面,(想想xy平面)。 飞机可以倾斜。 (想想一条斜坡路)。 给定定义曲面的3D坐标列表( Point3D1X , Point3D1Y , Point3D1Z , Point3D12X , Point3D2Y , Point3D2Z , Point3D3X , Point3D3Y , Point3D3Z等),如何计算曲面的面积? 请注意,我的问题类似于在2D平面中查找区域。 在2D平面中,我们有一个定义多边形的点列表,使用这个点列表我们可以找到多边形的面积。 现在假设所有这些点都具有z值,使得它们在3D中boost以形成表面。 我的问题是如何找到3D表面的区域?

格雷厄姆扫描问题点数很高

我的格雷厄姆扫描算法有一个问题,当我的列表有很多分数,但每次都很好,点数少。 我做了一些截图: 工作:(300分) 不工作(5000分) 角度计算: public static double angle(MyVector3D vec1, MyVector3D vec2) { return Math.Atan2(vec2.Y – vec1.Y, vec2.X – vec1.X) * 180 / Math.PI; } 极角分选点取决于最大Y点: //bubblesort private void sortList() { double temp = 0.0; MyVector3D tempVector = new MyVector3D(); for (int i = 1; i < points.Count; i++) { for (int j = 1; […]

用C#实现Hoey Shamos算法

好的,我现在从我当前的算法中获取正确的信息! 但是,要检查700,000个多边形,这太慢了! 上一期是固定的(My Line2D intersectsWith方法不正确) 现在这是确定我的瓶颈的问题! 该算法假设为O(nlog-n),因此它应该更快。 我的intersectsWith方法看起来不能更快,但我会发布它的代码,万一我错了 编辑:添加了IComparable接口 我读取线段交叉点的方法。 为了便于阅读,省略了一些代码。 public class Line2D : IComparable { public Line2D(XYPoints p1, XYPoints p2) { } public bool intersectsLine(Line2D comparedLine) { if ((X2 == comparedLine.X1) && (Y2 == comparedLine.Y1)) return false; if ((X1 == comparedLine.X2) && (Y1 == comparedLine.Y2)) return false; if (X2 == comparedLine.X1 && Y2 […]