public MidPointAuxiliaryState(Tool tool, Auxiliary auxiliary, Geometry geometry) : base(tool, auxiliary)
    {
        if (auxiliary is MidPointAuxiliary)
        {
            this.auxiliary = (MidPointAuxiliary)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);
        MidPointAuxiliary auxiliary   = new MidPointAuxiliary(i1, i2, sign);

        return(auxiliary);
    }