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

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

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

        FormElement formElement1 = (FormElement)formInput.inputs[1];
        FormElement formElement2 = (FormElement)formInput.inputs[3];
        int         id1          = geometry.SignVertex(formElement1.fields[0]);
        int         id2          = geometry.SignVertex(formElement2.fields[0]);
        int         id3          = geometry.SignVertex(formElement2.fields[1]);

        FormElement           SignElement = (FormElement)formInput.inputs[6];
        string                sign        = Sign(SignElement);
        LineVerticalAuxiliary auxiliary   = new LineVerticalAuxiliary(id1, id2, id3, sign);

        return(auxiliary);
    }