public LinePointAuxiliaryState(Tool tool, Auxiliary auxiliary, Geometry geometry) : base(tool, auxiliary)
    {
        if (auxiliary is LinePointAuxiliary)
        {
            this.auxiliary = (LinePointAuxiliary)auxiliary;
        }

        this.geometry = geometry;
    }
    public override Auxiliary GenerateAuxiliary(Geometry geometry, FormInput formInput)
    {
        bool valid = ValidateInput(geometry, formInput);

        if (!valid)
        {
            return(null);
        }

        FormElement formElement = (FormElement)formInput.inputs[1];

        string[] fields = formElement.fields;
        int      i1     = geometry.SignVertex(fields[0]);
        int      i2     = geometry.SignVertex(fields[1]);

        FormElement        SignElement = (FormElement)formInput.inputs[3];
        string             sign        = Sign(SignElement);
        LinePointAuxiliary auxiliary   = new LinePointAuxiliary(i1, i2, 0.3f, sign);

        return(auxiliary);
    }