Rhea是一个基于Cassowary的增量约束求解器,最初由Greg J. Badros和Alan Borning开发。主要区别在于:
#include <rhea/simplex_solver.hpp>
#include <rhea/iostream.hpp>
main()
{
rhea::variable left, mid, right;
rhea::simplex_solver solver;
solver.add_constraints(
{
mid == (left + right) / 2,
right == left + 10,
right <= 100,
left >= 0
});
solver.suggest(mid, 2);
std::cout << left << " " << mid << " " << right << std::endl;
// Prints "0 5 10"
}
这是原始论文中的线条示例。这些约束确保线条至少有10宽,适合在0..100范围内,并且中点位于左侧和右侧之间。
请注意,尽管我们建议中点为2,但求解器决定将其移到5,以便满足所有约束。
本软件处于测试版。它通过了所有单元测试,已被多个应用程序积极使用,但界面尚不稳定。
Rhea是免费软件:您可以在MIT/Expat许可证的条款下重新分发它或修改它。