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; }
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; }
//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;*/ }