- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 Triangle.Net 对某些带孔的多边形进行三角剖分时遇到问题。
问题似乎是在某些情况下,我使用轮廓定义孔并将孔设置为“真”(在首先添加外轮廓后,孔设置为假)。 Polygon.Add(contour, true);
Triangle.Net 然后通过 Point.FindInteriorPoint
在那个洞里找到一个点出于我不知道的原因,有时它会发现一个点位于那个洞的最边缘,结果是唯一被三角化的是洞,多边形的其余部分被忽略。
所以例如。具有相同外轮廓的两个多边形:(3.5, 3.5), (-2.5, 3.5), (-2.5 -0.5), (-4.5, -0.5), (-4.5, -2.5), (3.5, -2.5)
Image1
但是有一个洞定义为这个轮廓:
(2.5, 2.5), (2.5, 0.5), (0.5, 2.5)
(1.5, 2.5)
就在边界上。结果是外部多边形没有被三角化,但洞是。
Result
(0.5, 2.5), (2.5, 2.5), (2.5, 0.5)
(2, 2)
这是很好的中间。结果是正确地对外部多边形进行三角剖分,并正确切出孔。
Result
(2, 2)
而不是仅仅将孔设置为“真”,那么多边形都被正确地三角剖分。所以我相当肯定这个问题似乎归结为在孔轮廓内找到它自己的点。
(3.5, 3.5), (-2.5, 3.5), (-2.5, -2.5), (3.5, -2.5)
Image2
(1.5, 2.5)
也一切正常。 .所以现在我认为边缘点不是问题。
最佳答案
这里发生了两种不同的事情,加在一起,这使行为变得困惑。
第一个问题是 FindInteriorPoint 的行为。这种方法有一些鲁棒性问题,可以找到轮廓边界上的点。我怀疑你没有使用 this fork包含 some robustness improvements 的 Triangle.NET这应该会产生良好的结果,尤其是在这些简单的情况下。
现在,如果您确实使用孔边界上的点指定了一个孔,我们期望会发生什么?答案是结果是随机的/不可预测的。三角形在包含标识为孔的点的最终网格中定位三角形,并删除它所连接的所有三角形,而不与任何受约束的线段交叉。哪一边(使用精确算术)取决于网格中子段端点的精确坐标,对于细化网格,这取决于计算插入的额外顶点时发生的舍入。您的案例没有任何改进,因此该位置确实正好在该段上。三角形从起点向孔位置走,直到找到包含孔点的三角形:起点的任意位置决定了它首先到达哪一侧并最终选择。因此,如果您有不同的周围域,您将获得不同的(任意)起点,并且可以获得不同的结果。
关于c# - 为什么 Triangle.Net 没有按预期对这些多边形进行三角剖分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61821382/
我对java有点陌生,所以如果我犯了一个简单的错误,请原谅我,但我不确定我哪里出错了,我收到的错误是“预期的.class,预期的标识符,而不是声明, ';'预期的。”我尝试了不同的方法,并从这些方法中
This question already has answers here: chai test array equality doesn't work as expected (3个答案) 3年前
我正在学习 Java(对不起,我的英语很差,这不是我的母语),当我在 Eclipse (JavaSE-1.7) 中在我输入的每个“try”中执行“try-finally” block 时,会出现以下消
我收到两个错误,指出 token 上的语法错误,ConstructorHeaderName expected instead & token “(”上的语法错误,< expected 在线: mTM.
我找不到错误。 Eclipse 给我这个错误。每个 { } 都是匹配的。请帮忙。 Multiple markers at this line - Syntax error on token “)”,
代码: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class DoubleIt extends
我正在用 python(Vs 代码)编写代码,但出现此错误: Expected ")" Pylance 错误发生在:def main() 我试着运行我的 main 并将它打印到我的屏幕上。我用谷歌搜
我正在尝试按照 documentation 中的建议使用异步函数。但我收到此错误 意外的 token ,预期 ( async function getMoviesFromApi() { try
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
第一行包含一个表示数组长度的整数p。第二行包含用空格分隔的整数,这些整数描述数组中的每个元素。第三行打印一个整数,指示负数组的数量。 package asgn3; import java.util.*
好的,我是初学者,我必须修复此 java 表达式语言代码才能在我的系统 (Windchill) 中工作,但看起来我在语法中遗漏了一些内容: LWCNormalizedObject lwc =
我无法编译我的程序! 我想我缺少一个花括号,但我怎么也看不出在哪里! import javax.swing.*; import java.awt.*;
我的 jQuery 代码有问题,我的 Firebug 向我发出警告:需要选择器。 这是代码: $("img[id$='_tick']").each(function() { $(this).c
我的新类(class) Fountainofyouth 遇到了问题。尝试构建整个项目后,调试器显示 warning: extended initializer lists only available
我已经从 Java 转向 CPP,并且正在努力围绕构造构造函数链进行思考,我认为这是我的问题的根源。 我的头文件如下: public: GuidedTour(); GuidedTour(string
鉴于以下 for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]); jsLint 告诉我 Expect
我有这个 json,但 Visual Studio Code 在标题中给了我警告。 [ { "title": "Book A", "imageUrl": "https:
我正在尝试编写一个有条件地禁用四个特殊成员函数(复制构造、移动构造、复制赋值和移动赋值)的包装类,下面是我用于测试目的的快速草稿: enum class special_member : uint8_
所以我用 F# 编写了一个非常简单的程序,它应该对 1000 以下的所有 3 和 5 的倍数求和: [1..999] |> List.filter (fun x -> x % 3 = 0 || x %
我是一名优秀的程序员,十分优秀!