Tag: geometry

将凹壳算法转换为c#

所以我试图翻译这里的凹形船体算法: http : //repositorium.sdum.uminho.pt/bitstream/1822/6429/1/ConcaveHull_ACM_MYS.pdf (第65页) 我已经阅读了整个事情,但我无法弄清楚如何实现sortByAngle和angle ,我不知道我应该在它们内部做什么方法。 这是我到目前为止: //Main method public static Vertex[] ConcaveHull(Vertex[] points, int k = 3) { if (k < 3) throw new ArgumentException("K is required to be 3 or more", "k"); List hull = new List(); //Clean first, may have lots of duplicates Vertex[] clean = RemoveDuplicates(points); if (clean.Length < 3) […]

以快速的方式找到LIne和网格之间的交点

反正有没有让我找到一条线和一个网格之间的所有交叉点? (交叉圆圈不是按比例绘制的,我知道) 蛮力方式是计算xy网格与线的非常交集,但是该算法非常低效( O(m*n) ,其中m是x网格的数量, n是y网格的数量)。 我正在寻找一个更好的算法。

如何判断一条线是否与C#中的多边形相交?

我有一个非常类似的问题: 如何知道一条线是否与C#中的平面相交? 我正在寻找一种方法(在C#中),它告诉一条线是否与任意多边形相交。 我认为Chris Marasti-Georg的算法非常有用,但缺少最重要的方法,即线对线交叉。 有没有人知道线路交叉方法来完成Chris Marasti-Georg的代码还是有类似的东西? 在C#中是否有内置代码? 此方法适用于使用禁区function增强的Bing Maps算法。 生成的路径不得通过禁区(任意多边形)。

C#中高效的AABB /三角交叉

任何人都可以推荐任何公共AABB /三角交叉算法的CSharp高效端口。 我一直在看Moller的方法, 在这里抽象地描述,如果我要移植它,我可能会从这个C ++版本开始 。 Mike Vandelay的这个C ++库似乎也是一个很好的起点。 ……或者……任何其他“轮子”可以采用Vector3的三角形并告诉我它是否与AABB相交,相对有效。 似乎有各种各样的算法,但大多数似乎是用c ++编写的,或者只是在白皮书中抽象地描述,我需要针对我们的应用程序的ac#特定实现。 效率不是关键,但c#是。 (虽然效率当然也很好; p) 任何C#选项,在我通过“数学”端口之前;)将不胜感激! 谢谢。

数学问题:根据外角半径/厚度确定内边框的圆角半径

这是数学高手的数学/几何问题(不是我最强的主题)。 这适用于WPF,但应该足够通用,无论如何: 我有两个嵌入的边框元素,外边框有一定的角半径, R和边框厚度T 给定这两个值,内边框的角半径R’应该设置为使得两个角边不相交或没有孔? alt text http://sofzh.miximages.com/c%23/2z5t3qs.png 到目前为止,我一直在关注它,但如果有人能给我一个合适的配方,那将是伟大的。 尊重点,如果你能! ;)

在WPF中将Shape转换为可重用的几何体

我试图将System.Windows.Shapes.Shape对象转换为System.Windows.Media.Geometry对象。 使用Geometry对象,我将使用自定义图形控件多次渲染它,具体取决于一组数据点。 这要求Geometry对象的每个实例都有一个唯一的TranslateTransform对象。 现在,我正以两种不同的方式处理这个问题,但似乎都没有正常工作。 我的自定义控件使用以下代码来绘制几何: //Create an instance of the geometry the shape uses. Geometry geo = DataPointShape.RenderedGeometry.Clone(); //Apply transformation. TranslateTransform translation = new TranslateTransform(dataPoint.X, dataPoint.Y); geo.Transform = translation; //Create pen and draw geometry. Pen shapePen = new Pen(DataPointShape.Stroke, DataPointShape.StrokeThickness); dc.DrawGeometry(DataPointShape.Fill, shapePen, geo); 我还尝试了以下替代代码: //Create an instance of the geometry the shape uses. Geometry geo […]

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

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

如何计算C,C#/ .NET 2.0或Java中所有情况下点和线段之间的最短2D距离?

可能重复: 点和线段之间的最短距离 我正在寻找一种计算所有情况下最小距离的方法。 我找到的解决方案的问题是: 带有图形概念图的解决方案显示点始终与线段垂直,因此它“在线段的端点之间”。 我的几何技能太可怕了,所以我无法validation这些解决方案是否适用于所有情况。 算法解决方案是:使用fortran或其他语言我不完全理解,b:被人们标记为不完整,c:调用未以任何方式描述的方法/函数(被认为是微不足道的)。 2 a,b和c的好例子是 点和线段之间的最短距离 我有2D线段作为双类型坐标对(x1,y1),(x2,y2)和点作为双类型坐标(x3,y3)。 C#/ Java / C解决方案都很受欢迎。 感谢您的回答和BR:Matti

3D点上的垂直点

之前已经提到过这个问题,参考2D。 这个问题扩展到3D。 如何在3D空间中的点上找到直线相交点? 如果我的线由点(x1,y1,z1)和(x2,y2,z2)并且我在空间中有一个点(x3,y3,z3) 。 如何在(x3,y3,z3)的直线上找到点(x4,y4,z4)的垂直交点?

C#中2个纬度/经度点之间的方向

我有2个Lat Long格式的坐标。 我如何从A点(例如纽约37.149472,-95.509544)确定指向B点的方向(例如多伦多40.714269,-74.005973) 我正在寻找像“340 Degrees”这样的价值 在C#中