【问题标题】:WPF Path detection for a section of the path部分路径的 WPF 路径检测
【发布时间】:2020-02-06 18:38:38
【问题描述】:

正如 Clemens (WPF Paths Collision detection?) 所回答的,可以检测路径何时与此代码接触/重叠:

var intersectionDetail = path1.Data.FillContainsWithDetail(path2.Data);

if (intersectionDetail != IntersectionDetail.NotCalculated &&
    intersectionDetail != IntersectionDetail.Empty)
{
    // collision
}

是否可以使用路径的一部分来执行此操作?还是我需要将路径拆分为两个单独的路径并单独使用它们?

【问题讨论】:

  • 具体取决于您在做什么,这可能不是“最佳”方法。对于我们的地图编辑器应用程序,我需要确定哪些点落在用户绘制的形状内。我发现效果最好的解决方案是在屏幕外渲染形状,然后迭代像素。您可以渲染这样,只有在两个形状重叠的地方才会出现任何东西。可以处理许多形状、复杂形状等。
  • 这当然对你完全没用。但是您可以计算出两个形状的边界框,以尽量减少您感兴趣的位置或它们是否可能重叠。

标签: c# wpf xaml collision-detection collision


【解决方案1】:

在尝试不同的事情几个小时后,拆分路径似乎是最好的方法(并且确实有效)。我将路径拆分到一个已知位置并像以前一样使用代码 - 但更新为与两者一起使用:

var intersectionDetail1 = path1.Data.FillContainsWithDetail(path2.Data);
var intersectionDetail2 = path1.Data.FillContainsWithDetail(path3.Data);

if (intersectionDetail1 != IntersectionDetail1.NotCalculated &&
    intersectionDetail1 != IntersectionDetail1.Empty)
{
    // collision with path part 1
}

if (intersectionDetail2 != IntersectionDetail2.NotCalculated &&
    intersectionDetail2 != IntersectionDetail2.Empty)
{
    // collision with path part 2
}

在此示例中,原始路径 2 已拆分为路径 2 和路径 3。如果 path1 与其中任何一个发生冲突,则分别检测它们。

【讨论】:

    猜你喜欢
    • 2013-03-14
    • 2023-04-02
    • 2017-10-20
    • 2013-09-07
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多