/// <summary> /// コンストラクタ /// </summary> /// <param name="Name">ノード名</param> /// <param name="Mass">ノード質量</param> /// <param name="X">ノードの初期X座標</param> /// <param name="Y">ノードの初期Y座標</param> public Node(string Name, double Mass, double X, double Y, int Seed) { this.NodeName = Name; this.NodeMass = Mass; this.Coordinate = new Pair(X, Y); this.NodeShape.Name = Name; this.ToEdge = new List<Edge>(); this.LinkNode = new List<Node>(); this.Speed = new Pair(0.0d, 0.0d); this.LastAccessTime = DateTime.Now.ToString(); //乱数 Random Rand = new Random(Seed); int R = Rand.Next(0, 255), G = Rand.Next(0, 255), B = Rand.Next(0, 255); this.NodeColor = new SolidBrush(Color.FromArgb(R, G, B)); }
/// <summary> /// 力が加わった場合のノードの座標と速度を求める /// </summary> /// <param name="DeltaT">微小時間,時間の変化量</param> /// <param name="f">ノードに伝わった力の合計</param> public void MoveNode(double DeltaT, Pair f) { this.Speed = new Pair() { X = this.Speed.X + DeltaT * f.X / this.NodeMass, Y = this.Speed.Y + DeltaT * f.Y / this.NodeMass }; this.Coordinate = new Pair() { X = this.Coordinate.X + DeltaT * this.Speed.X, Y = this.Coordinate.Y + DeltaT * this.Speed.Y }; }