我们可以使用CGAL解决下面提到的形式的线性规划可行性问题(如果没有,请建议替代方案):
v.x_a > c
和
v.x_b = c
其中v
,x_a
,x_b
,c
分别是向量,向量,向量和标量。我想找到一组(v,c)
(x
和x_a
是x_b
的元素)的元组x
,它可以满足这个不等式。
我见过documentation,但允许的格式为Ax(relation operator)b
,其中relation operator
可以是> =,< =或=,其中A
和{ {1}}已知且b
未知但我的要求相反,即我有x
但我想确定是否存在满足不等式的元组x
。< / p>
上下文 我正在尝试实现一个3D网格生成器,我需要测试边缘(连接两个3D顶点)是否为Delaunay。 Delaunay边定义为:边是Delaunay,如果存在其端点的圆周,其中不包含任何其他顶点。
我的问题是基于here
所描述的方法答案 0 :(得分:2)
根据David Eppstein在链接问题中描述的结构,i
和j
是固定的,我们还有v.xi = v.xj = c
的额外限制。所以问题就变成了:
找到一个向量
v != 0
,以便所有k和v.xk >= v.xi
都v.xi = v.xj
。
这可以转换为
找到一个向量
v != 0
,以便所有k(xk - xi).v >= 0
和(xi - xj).v >= 0
-(xi - xj).v >= 0
通过将A
定义为包含所有k,xk - xi
和xi - xj
的行xj - xi
的矩阵,我们得到
找到
的向量v != 0
Av >= 0
具有您需要的形式。您可以通过强制非零组件强制执行v != 0
。对于每个组件i
,并尝试添加条件vi >= 1
或vi <= -1
并检查生成的系统的可解决性。由于平面的法向量可以任意缩放,因此可以解决任何结果程序是否可解的问题(如果2d
是d
的维度,则有v
个