标签: non-convex

凹面六边形有两个口的标准网格?

我正在计划通过带两个嘴的凹形双对称六边形流动的可视化.

边d1的长度等于边d2的另一长度的示例:

在此输入图像描述

我在这里首先讨论的关于不规则六边形的命名.

有标准的网格工具,你可以绘制自己的网格,但我想有一些标准库,以便我可以与其他人更好地合作,以后的流程模拟.我没有找到任何网库在MathCentral文件交换六边形这里.

是否有任何标准的网格库用于不规则的六边形形状?我也对任何其他语言开放,因为我可以阅读代码并将这些标准转换为Matlab库.

geometry mesh convex-optimization finite-element-analysis non-convex

9
推荐指数
1
解决办法
312
查看次数

找到最大凸面积

我的问题与普劳问题非常相似; 但有这种差异:

如何找到可以适合非凸区域的最大凸区域?

例如,考虑这个非凸区域:

图片

任何想法或解决方案将不胜感激,谢谢.

convex non-convex

7
推荐指数
1
解决办法
1458
查看次数

如何确定三角形网格是否凹陷?

给定一个三维三角形网格,我怎样才能知道它是凸面还是凹面?有算法检查吗?如果是这样,定义公差范围以忽略小凹陷将是有用的.

凹凸的插图

图片来源:http://www.rustycode.com/tutorials/convex.html

c++ algorithm mesh convex non-convex

6
推荐指数
1
解决办法
2941
查看次数

以顺时针顺序检测非凸多边形的角坐标MATLAB

我有一些图像,包括凸多边形和非凸多边形.每个图像只包含一个多边形.我需要检测角坐标,并需要按顺时针或逆时针顺序对它们进行排序.对于凸多边形,我使用Harris角点检测来检测角点和凸包线以对点进行排序.但我对如何排序非凸多边形没有任何想法.由于我的输入是图像,我认为一些图像处理技术可能有助于通过沿多边形边缘移动来对它们进行排序.有没有办法最简单?

示例图片:

我随机命名了角落.

在此输入图像描述

预期产量:

我希望角度坐标按此顺序 1 3 5 9 4 2 8 7 6 101 10 6 7 8 2 4 9 5 3.你可以从任何一点开始,不一定1

编辑1:

在对所有凸多边形以及一些非凸多边形起作用的rayryeng解之后,有一些非凸多边形与他的算法不相符.

这是一个例子

在此输入图像描述

matlab polygon image-processing non-convex corner-detection

6
推荐指数
2
解决办法
3451
查看次数

如何在非凸多边形中排序顶点(如何找到许多解中的一个)

我有同样的问题:如何在一个简单的非凸多边形中排序顶点, 但没有我可以使用的解决方案.

我有点的坐标,需要找到一些多边形.对于一个点列表有更多解决方案并不重要.我需要一些算法来找到其中一个.无论哪一个.我真的不知道如何解决这个问题.

(我在数组中存储坐标,我想在Javascript中使用一些算法)

非常感谢.

algorithm polygon points non-convex

5
推荐指数
1
解决办法
4119
查看次数

扫描线多边形三角剖分:如何找到当前顶点左侧的边?

我目前正在编写 y 单调扫描线算法来对非凸多边形进行三角测量。实现此目的的第一步是使多边形 y 单调。

MakeMonotone《Mark de Berg 的计算几何》一书的伪代码( https://archive.org/details/computationalgeo00berg):

MakeMonotone 伪代码

现在回答我的问题:

在那本书和我发现的所有其他网站中,没有解释如何对提到的“二叉搜索树T ”中的边进行精确排序。参考书中唯一提到的是“ T的叶子从左到右的顺序对应于边从左到右的顺序”。但是,该树中的边是按什么属性/属性排序的呢?我也不清楚,二叉树中的边应该如何准确地表示(起点?终点?两者的组合?)。

我最幼稚的方法是找出T中所有边与扫掠线和直线的交点,并计算其中哪一条最接近当前顶点。但考虑到在每本书/大学幻灯片中,T的内部工作原理都没有进一步解释,所以它一定要容易得多。

二叉搜索树应支持以下操作:

  • 插入新边
  • 查找当前扫掠线上顶点左侧的边
  • 删除一条边

geometry polygon triangulation computational-geometry non-convex

5
推荐指数
1
解决办法
935
查看次数

在 Pytorch 中执行优化时如何对变量应用界限?

我正在尝试使用 Pytorch 进行非凸优化,试图最大化我的目标(因此在 SGD 中最小化)。我想限制因变量 x > 0,并且 x 值的总和小于 1000。

我认为我已经以斜坡惩罚的形式正确实施了惩罚,但我正在努力解决 x 变量的边界问题。在 Pytorch 中,您可以使用设置边界clamp,但在这种情况下似乎不合适。我认为这是因为 optim 需要在幕后自由的渐变。完整的工作示例:

import torch
from torch.autograd import Variable
import numpy as np

def objective(x, a, b, c):   # Want to maximise this quantity (so minimise in SGD)
    d = 1 / (1 + torch.exp(-a * (x)))

    # Checking constraint 
    exceeded_limit = constraint(x).item()
    #print(exceeded_limit)

    obj = torch.sum(d * (b * c - x))

    # If overlimit add ramp penalty
    if  exceeded_limit < 0: …
Run Code Online (Sandbox Code Playgroud)

optimization non-convex clamp pytorch

4
推荐指数
1
解决办法
5833
查看次数