コード例 #1
0
        public ClLinearInequality(ClLinearExpression cle1, Cl.Operator op, ClLinearExpression cle2, ClStrength strength, double weight = 1.0)
            : base(cle2.Clone(), strength, weight)
            /* throws ExClInternalError */
        {
            const double EPSILON = 1e-8;

            switch (op)
            {
            case Cl.Operator.GreaterThanOrEqualTo:
                SetupGreaterThanOrEqualTo(cle1);
                break;

            case Cl.Operator.GreaterThan:
                SetupGreaterThanOrEqualTo(cle1);
                ExpressionField.IncrementConstant(-EPSILON);
                break;

            case Cl.Operator.LessThanOrEqualTo:
                SetupLessThanOrEqualTo(cle1);
                break;

            case Cl.Operator.LessThan:
                SetupLessThanOrEqualTo(cle1);
                ExpressionField.IncrementConstant(-EPSILON);
                break;

            default:
                // invalid operator
                throw new CassowaryInternalException("Invalid operator in ClLinearInequality constructor");
            }
        }
コード例 #2
0
 public ClLinearEquation(ClLinearExpression cle1, ClLinearExpression cle2, ClStrength strength, double weight = 1.0)
     : base(cle1.Clone(), strength, weight)
 {
     ExpressionField.AddExpression(cle2, -1.0);
 }
コード例 #3
0
 public ClLinearEquation(ClLinearExpression cle, ClAbstractVariable clv, ClStrength strength, double weight = 1.0)
     : base(cle.Clone(), strength, weight)
 {
     ExpressionField.AddVariable(clv, -1.0);
 }