public static void QuantumState_SetVisible(QuantumState __instance, bool visible)
        {
            if (!QSBWorldSync.AllObjectsReady)
            {
                return;
            }

            if (!visible)
            {
                return;
            }

            var allMultiStates = QSBWorldSync.GetWorldObjects <QSBMultiStateQuantumObject>();
            var stateObject    = __instance.GetWorldObject <QSBQuantumState>();
            var owner          = allMultiStates.FirstOrDefault(x => x.QuantumStates.Contains(stateObject));

            if (owner == default)
            {
                DebugLog.ToConsole($"Error - Could not find QSBMultiStateQuantumObject for state {__instance.name}", MessageType.Error);
                return;
            }

            if (owner.ControllingPlayer != QSBPlayerManager.LocalPlayerId)
            {
                return;
            }

            var stateIndex = owner.QuantumStates.IndexOf(stateObject);

            owner.SendMessage(new MultiStateChangeMessage(stateIndex));
        }
Пример #2
0
 protected override void Start()
 {
     base.Start();
     crosshair    = GameObject.Find("Crosshair").GetComponent <Image>();
     currentState = QuantumState.Idle;
     shipCam      = FindObjectOfType <ShipCam>().GetComponentInChildren <Camera>();
     originalFOV  = shipCam.fieldOfView;
 }
Пример #3
0
 public EntanglementWindow(QuantumState state)
 {
     //Bipartition = new SystemBipartition(state.Size);
     State = state;
     //sizeChosen = definitionChosen = true;
     //criterionChosen = partitionChosen = false;
     InitializeComponent();
     //SetPartitions();
 }
 public override void Evaluate(QuantumState state, SystemBipartition bipartition)
 {
     if (state.Size == 1)
     {
         SigmaRank = 1;
     }
     else
     {
         EvaluatedMatrix = Transformation.FromStateRowWise(state, bipartition);
         Decompose(EvaluatedMatrix);
     }
 }
Пример #5
0
        public override Transformation GetTransformation(QuantumState state)
        {
            double random      = new Random().NextDouble();
            double probability = state.ProabailityInBasis(GateTransformation.Column(0));

            if (random < probability)
            {
                return(new Transformation(GateTransformation.Column(0).OuterProduct(GateTransformation.Column(0))));
            }
            else
            {
                return(new Transformation(GateTransformation.Column(1).OuterProduct(GateTransformation.Column(1))));
            }
        }
Пример #6
0
        public static void QuantumState_SetVisible(QuantumState __instance, bool visible)
        {
            if (!visible)
            {
                return;
            }
            var allMultiStates = QSBWorldSync.GetWorldObjects <QSBMultiStateQuantumObject>();
            var stateObject    = QSBWorldSync.GetWorldFromUnity <QSBQuantumState, QuantumState>(__instance);
            var owner          = allMultiStates.First(x => x.QuantumStates.Contains(stateObject));

            if (owner.ControllingPlayer != QSBPlayerManager.LocalPlayerId)
            {
                return;
            }
            var stateIndex = owner.QuantumStates.IndexOf(stateObject);

            QSBEventManager.FireEvent(
                EventNames.QSBMultiStateChange,
                owner.ObjectId,
                stateIndex);
        }
Пример #7
0
 private bool CreateStateFromDefinition()
 {
     Complex[, ] values = ReadTextMatrix();
     if (values == null)
     {
         return(false);
     }
     if (DensityMatrix.IsChecked == true)
     {
         if (!StateOperator.IsStateOperator(values))
         {
             ErrorMessage.Content    = "Defined matrix does not represent state operator";
             ErrorMessage.Visibility = Visibility.Visible;
             return(false);
         }
         StateOperator = StateOperator.FromValues(values);
         return(true);
     }
     else if (StateMatrix.IsChecked == true)
     {
         Complex sum = Complex.Zero;
         foreach (Complex value in values)
         {
             sum += value;
         }
         if (sum == Complex.Zero)
         {
             ErrorMessage.Content    = "At least one value mus be nonzero";
             ErrorMessage.Visibility = Visibility.Visible;
             return(false);
         }
         State = QuantumState.FromValues(values);
         return(true);
     }
     return(false);
 }
Пример #8
0
 public abstract void DisplayResults(QuantumState state, SystemBipartition bipartition);
Пример #9
0
 internal void Import()
 {
     State = (item.Adjustment + 1.0) / 2.0;
 }
Пример #10
0
 public override void DisplayResults(QuantumState state, SystemBipartition bipartition)
 {
     DisplayResults(StateOperator.FromQuantumState(state), bipartition);
 }
Пример #11
0
        //public ComputableCrossNormCriterion(QuantumState state) : base(state) { }


        //public ComputableCrossNormCriterion(StateOperator @operator) : base(@operator) { }


        public override void Evaluate(QuantumState state, SystemBipartition bipartition)
        {
            Evaluate(StateOperator.FromQuantumState(state), bipartition);
        }
 public override void DisplayResults(QuantumState state, SystemBipartition bipartition)
 {
     Criterion.Evaluate(state, bipartition);
     SetVisuals((SchmidtDecomposition)Criterion);
 }
Пример #13
0
        //public QuantumState State { get; private set;}

        //public StateOperator StateOperator { get; private set; }

        /*
         * public SvdEntanglementCriterion(QuantumState state)
         * {
         *  State = state;
         *  StateOperator = StateOperator.FromQuantumState(state);
         * }
         *
         * public SvdEntanglementCriterion(StateOperator state)
         * {
         *  StateOperator = state;
         * }
         */

        public abstract void Evaluate(QuantumState state, SystemBipartition bipartition);
Пример #14
0
    void ChangeState(QuantumState state)
    {
        switch (state)
        {
        case QuantumState.Idle:
            crosshair.enabled = false;
            shipController.thrusters.Activate();
            shipController.boosters.Activate();

            // Indicator Lights
            if (shipController.assistModule)
            {
                if (quantumLock)
                {
                    shipController.lights.QuantumInactiveIndicator();
                }
                else
                {
                    shipController.lights.QuantumReadyIndicator();
                }
                shipController.assistModule.Activate();
            }
            break;

        case QuantumState.Searching:
            // Indicator Lights
            if (shipController.assistModule)
            {
                shipController.lights.QuantumActiveIndicator();
            }

            crosshair.enabled = true;
            break;

        case QuantumState.Breaking:
            crosshair.enabled = false;
            shipController.thrusters.Deactivate();
            shipController.boosters.Deactivate();

            // Indicator Lights
            if (shipController.assistModule)
            {
                shipController.assistModule.Deactivate();
                shipController.lights.QuantumActiveIndicator();
            }

            quantumParts.Stop();
            break;

        case QuantumState.Jumping:
            shipController.thrusters.Deactivate();
            shipController.boosters.Deactivate();
            quantumParts.Play();

            // Indicator Lights
            if (shipController.assistModule)
            {
                shipController.lights.QuantumActiveIndicator();
            }

            break;

        default:
            break;
        }

        currentState = state;
    }