Exemple #1
0
    public void reArrangeWireNets()
    {
        foreach (WireNet wn in Data.wireNet)
        {
            Destroy(wn.gameObject);
        }
        Data.wireNet.Clear();
        List <electronicComponent> list = new List <electronicComponent>();

        found = new List <electronicComponent>();
        list.AddRange(FindObjectsOfType <Wire>());         //-------add to data
        list.AddRange(FindObjectsOfType <Intersection>()); //----------
        while (list.Count > 0)
        {
            electronicComponent cur = list[0];
            WireNet             w   = Instantiate(wireNet).GetComponent <WireNet>();
            Data.Add(w);
            foreach (electronicComponent c in getWireNet(cur))
            {
                if (c.GetType() == typeof(Wire))
                {
                    w.wires.Add((Wire)c);
                    ((Wire)c).wireNet = w;
                }
                if (c.GetType() == typeof(Intersection))
                {
                    w.intersections.Add((Intersection)c);
                    ((Intersection)c).wireNet = w;
                }
                list.Remove(c);
            }
            list.Remove(cur);
        }
    }
 public void create_(Main main, Wire target1, Wire target2)
 {
     w1 = target1; w2 = target2;
     c1 = w1.wireNet; c2 = w2.wireNet;
     transform.position = (w1.centerPos + w2.centerPos) / 2 + new Vector3(0, 2, 0);
     base.create(main);
 }
 public override void Update_child_class()
 {
     if (w1 == null || w2 == null)//main.rearrangeWireNet會影響到wireNet但不影響wire
     {
         Destroy(gameObject);
         return;
     }
     else if (c1 == null || c2 == null)
     {
         c1 = w1.wireNet; c2 = w2.wireNet;
     }
     if (Mathf.Abs((float)GetSample()) < 0.00001)
     {
         text.text = (GetSample() * 1000000).ToString("+0.00;-0.00") + "μV";
     }
     if (Mathf.Abs((float)GetSample()) < 0.01)
     {
         text.text = (GetSample() * 1000).ToString("+0.00;-0.00") + "mV";
     }
     else
     {
         text.text = GetSample().ToString("+0.00;-0.00") + "V";
     }
     Vector3[] p = { w1.centerPos, transform.position - new Vector3(0, 0.5f, 0), w2.centerPos };
     line.SetPositions(p);
 }
    public override void Simulate(float t, float deltaT)
    {
        if (connect[0] == null || connect[1] == null)
        {
            i = 0; return;
        }
        WireNet w1 = ((Wire)connect[0]).wireNet, w2 = ((Wire)connect[1]).wireNet;

        double c1 = w1.c, c2 = w2.c;
        double q1 = w1.q, q2 = w2.q;
        double deltaQ = (q1 / c1 - q2 / c2) / r * deltaT;

        w1.nextQ -= deltaQ;
        w2.nextQ += deltaQ;
        i         = deltaQ / deltaT;
    }
Exemple #5
0
    public override void Simulate(float t, float deltaT)
    {
        if (connect[0] == null || connect[1] == null)
        {
            i = 0; return;
        }
        WireNet w1 = ((Wire)connect[0]).wireNet, w2 = ((Wire)connect[1]).wireNet;

        double c1 = w1.c, c2 = w2.c;
        double q1 = w1.q, q2 = w2.q;
        double deltaQ = (-c * c1 * q2 + c * c2 * q1 - c1 * c2 * q) / (c * c1 + c * c2 + c1 * c2);

        q        += deltaQ;
        w1.nextQ -= deltaQ;
        w2.nextQ += deltaQ;
        i         = deltaQ / deltaT;
    }
Exemple #6
0
    //v: w1->w2
    public override void Simulate(float t, float deltaT)
    {
        if (connect[0] == null || connect[1] == null)
        {
            return;
        }
        WireNet w1 = ((Wire)connect[0]).wireNet, w2 = ((Wire)connect[1]).wireNet;
        double  c1 = w1.c, c2 = w2.c;
        double  q1 = w1.q, q2 = w2.q;

        double deltaQ = (c1 * c2 * v(t) + c2 * q1 - c1 * q2) / (c1 + c2);

        w1.nextQ -= deltaQ;
        w2.nextQ += deltaQ;
        i         = deltaQ / deltaT;

        /*
         * w1.nextQ = v(t)*c1;
         * w2.nextQ = 0;*/
    }