コード例 #1
0
ファイル: HTAction.cs プロジェクト: wuyanna/HyperTree
 public HTAction(HTDraw model)
 {
     this.model = model;
     startPoint = new HTCoordE();
     endPoint = new HTCoordE();
     clickPoint = new HTCoordS();
 }
コード例 #2
0
ファイル: HTModelNode.cs プロジェクト: wuyanna/HyperTree
        public HTModelNode(HTNode node, HTModelNodeComposite parent, HTModel model)
        {
            this.node = node;
            this.parent = parent;
            this.model = model;
            model.IncrementNumberOfNodes();

            z = new HTCoordE();
        }
コード例 #3
0
ファイル: HTModelNode.cs プロジェクト: wuyanna/HyperTree
        public HTModelNode(HTNode node, HTModelNodeComposite parent, HTModel model)
        {
            this.node   = node;
            this.parent = parent;
            this.model  = model;
            model.IncrementNumberOfNodes();

            z = new HTCoordE();
        }
コード例 #4
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
        internal void Translate(HTCoordE t)
        {
            double denX = (x * t.x) + (y * t.y) + 1;
            double denY = (y * t.x) - (x * t.y);
            double dd   = (denX * denX) + (denY * denY);

            double numX = x + t.x;
            double numY = y + t.y;

            x = ((numX * denX) + (numY * denY)) / dd;
            y = ((numY * denX) - (numX * denY)) / dd;
        }
コード例 #5
0
        internal HTGeodesic(HTCoordE za, HTCoordE zb)
        {
            this.za = za;
            this.zb = zb;
            zc      = new HTCoordE();
            zo      = new HTCoordE();

            a = new HTCoordS();
            b = new HTCoordS();
            c = new HTCoordS();

            Rebuild();
        }
コード例 #6
0
ファイル: HTGeodesic.cs プロジェクト: wuyanna/HyperTree
        internal HTGeodesic(HTCoordE za, HTCoordE zb)
        {
            this.za = za;
            this.zb = zb;
            zc = new HTCoordE();
            zo = new HTCoordE();

            a = new HTCoordS();
            b = new HTCoordS();
            c = new HTCoordS();

            Rebuild();
        }
コード例 #7
0
ファイル: HTDrawNode.cs プロジェクト: wuyanna/HyperTree
        public HTDrawNode(HTDrawNodeComposite father, HTModelNode node, HTDraw model)
        {
            this.father = father;
            this.node = node;
            this.model = model;

            label = new HTNodeLabel(this);

            ze = new HTCoordE(node.GetCoordinates());
            oldZe = new HTCoordE(ze);
            zs = new HTCoordS();

            model.MapNode(node.GetNode(), this);
            return;
        }
コード例 #8
0
ファイル: HTDrawNode.cs プロジェクト: wuyanna/HyperTree
        public HTDrawNode(HTDrawNodeComposite father, HTModelNode node, HTDraw model)
        {
            this.father = father;
            this.node   = node;
            this.model  = model;

            label = new HTNodeLabel(this);

            ze    = new HTCoordE(node.GetCoordinates());
            oldZe = new HTCoordE(ze);
            zs    = new HTCoordS();

            model.MapNode(node.GetNode(), this);
            return;
        }
コード例 #9
0
        override internal void Translate(HTCoordE t)
        {
            base.Translate(t);
            HTDrawNode child = null;

            for (IEnumerator i = Children(); i.MoveNext();)
            {
                child = (HTDrawNode)i.Current;
                child.Translate(t);
                HTGeodesic geod = (HTGeodesic)geodesics[child];
                if (geod != null)
                {
                    geod.Rebuild();
                }
            }
        }
コード例 #10
0
ファイル: HTModelNode.cs プロジェクト: wuyanna/HyperTree
        public virtual void Layout(double angle, double width, double length)
        {
            if (parent == null)
            {
                return;
            }

            HTCoordE zp = parent.GetCoordinates();

            z.X = length * Math.Cos(angle);
            z.Y = length * Math.Sin(angle);

            z.Translate(zp);
            //Debug.WriteLine("modelnodel.z:" + z);
            //Debug.WriteLine("modelnodel.zparent:" + parent);
        }
コード例 #11
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
        internal void Transform(HTTransformation t)
        {
            HTCoordE z = new HTCoordE(this);

            Multiply(t.O);
            x += t.P.x;
            y += t.P.y;

            HTCoordE d = new HTCoordE(t.P);

            d.y = -d.y;
            d.Multiply(z);
            d.Multiply(t.O);
            d.x += 1;

            Divide(d);
        }
コード例 #12
0
ファイル: HTTransformation.cs プロジェクト: wuyanna/HyperTree
        internal void Composition(HTCoordE first, HTCoordE second)
        {
            P.X = first.X + second.X;
            P.Y = first.Y + second.Y;

            HTCoordE d = new HTCoordE(second);
            d.Y = -d.Y;
            d.Multiply(first);
            d.X += 1;
            P.Divide(d);

            O.X = first.X;
            O.Y = -first.Y;
            O.Multiply(second);
            O.X += 1;
            O.Divide(d);
        }
コード例 #13
0
        internal void Composition(HTCoordE first, HTCoordE second)
        {
            P.X = first.X + second.X;
            P.Y = first.Y + second.Y;

            HTCoordE d = new HTCoordE(second);

            d.Y = -d.Y;
            d.Multiply(first);
            d.X += 1;
            P.Divide(d);

            O.X = first.X;
            O.Y = -first.Y;
            O.Multiply(second);
            O.X += 1;
            O.Divide(d);
        }
コード例 #14
0
        override public void Layout(double angle, double width, double length)
        {
            base.Layout(angle, width, length);

            if (parent != null)
            {
                HTCoordE a  = new HTCoordE(Math.Cos(angle), Math.Sin(angle));
                HTCoordE nz = new HTCoordE(-z.X, -z.Y);
                a.Translate(parent.GetCoordinates());
                a.Translate(nz);
                angle = a.Arg();

                double c = Math.Cos(width);
                double A = 1 + length * length;
                double B = 2 * length;
                width = Math.Acos((A * c - B) / (A - B * c));
            }

            HTModelNode child = null;
            HTCoordE    dump  = new HTCoordE();

            int    nbrChild = children.Count;
            double l1       = (0.95 - model.GetLength());
            double l2       = Math.Cos((20.0 * Math.PI) / (2.0 * nbrChild + 38.0));

            length = model.GetLength() + (l1 * l2);

            double startAngle = angle - width;

            for (IEnumerator i = Children(); i.MoveNext();)
            {
                child = (HTModelNode)i.Current;

                double percent    = child.GetWeight() / globalWeight;
                double childWidth = width * percent;
                double childAngle = startAngle + childWidth;
                child.Layout(childAngle, childWidth, length);
                startAngle += 2.0 * childWidth;
            }
        }
コード例 #15
0
        public override void Layout(double angle, double width, double length)
        {
            base.Layout(angle, width, length);

            if (parent != null)
            {
                HTCoordE a = new HTCoordE(Math.Cos(angle), Math.Sin(angle));
                HTCoordE nz = new HTCoordE(-z.X, -z.Y);
                a.Translate(parent.GetCoordinates());
                a.Translate(nz);
                angle = a.Arg();

                double c = Math.Cos(width);
                double A = 1 + length * length;
                double B = 2 * length;
                width = Math.Acos((A * c - B) / (A - B * c));
            }

            HTModelNode child = null;
            HTCoordE dump = new HTCoordE();

            int nbrChild = children.Count;
            double l1 = (0.95 - model.GetLength());
            double l2 = Math.Cos((20.0 * Math.PI) / (2.0 * nbrChild + 38.0));
            length = model.GetLength() + (l1 * l2);

            double startAngle = angle - width;

            for (IEnumerator i = Children(); i.MoveNext(); )
            {
                child = (HTModelNode)i.Current;

                double percent = child.GetWeight() / globalWeight;
                double childWidth = width * percent;
                double childAngle = startAngle + childWidth;
                child.Layout(childAngle, childWidth, length);
                startAngle += 2.0 * childWidth;
            }
        }
コード例 #16
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal void Divide(HTCoordE z)
 {
     double d = z.D2();
     double tx = x;
     double ty = y;
     x = ((tx * z.X) + (ty * z.Y)) / d;
     y = ((ty * z.X) - (tx * z.Y)) / d;
 }
コード例 #17
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal void Copy(HTCoordE z)
 {
     this.X = z.X;
     this.Y = z.Y;
 }
コード例 #18
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 void Sub(HTCoordE a, HTCoordE b)
 {
     x = a.X - b.X;
     y = a.Y - b.Y;
 }
コード例 #19
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal void Copy(HTCoordE z)
 {
     this.X = z.X;
     this.Y = z.Y;
 }
コード例 #20
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 public HTCoordE(HTCoordE z)
 {
     this.Copy(z);
 }
コード例 #21
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal void Translate(HTCoordE s, HTCoordE t)
 {
     this.Copy(s);
     this.Translate(t);
 }
コード例 #22
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal void Translate(HTCoordE s, HTCoordE t)
 {
     this.Copy(s);
     this.Translate(t);
 }
コード例 #23
0
ファイル: HTCoordS.cs プロジェクト: wuyanna/HyperTree
 internal void ProjectionEtoS(HTCoordE ze, HTCoordS sOrigin, HTCoordS sMax)
 {
     x = (int)Math.Round(ze.X * sMax.X) + sOrigin.X;
     y = -(int)Math.Round(ze.Y * sMax.Y) + sOrigin.Y;
 }
コード例 #24
0
ファイル: HTCoordS.cs プロジェクト: wuyanna/HyperTree
 internal void ProjectionEtoS(HTCoordE ze, HTCoordS sOrigin, HTCoordS sMax)
 {
     x = (int)Math.Round(ze.X * sMax.X) + sOrigin.X;
     y = -(int)Math.Round(ze.Y * sMax.Y) + sOrigin.Y;
 }
コード例 #25
0
 internal HTTransformation()
 {
     P = new HTCoordE();
     O = new HTCoordE();
 }
コード例 #26
0
ファイル: HTDrawNode.cs プロジェクト: wuyanna/HyperTree
 internal virtual void Translate(HTCoordE t)
 {
     ze.Translate(oldZe, t);
 }
コード例 #27
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
        internal void Translate(HTCoordE t)
        {
            double denX = (x * t.x) + (y * t.y) + 1;
            double denY = (y * t.x) - (x * t.y);
            double dd = (denX * denX) + (denY * denY);

            double numX = x + t.x;
            double numY = y + t.y;

            x = ((numX * denX) + (numY * denY)) / dd;
            y = ((numY * denX) - (numX * denY)) / dd;
        }
コード例 #28
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal double D(HTCoordE p)
 {
     return Math.Sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
 }
コード例 #29
0
ファイル: HTDraw.cs プロジェクト: wuyanna/HyperTree
        internal void Translate(HTCoordE zs, HTCoordE ze)
        {
            HTCoordE zo = new HTCoordE(drawRoot.GetOldCoordinates());
            zo.X = -zo.X;
            zo.Y = -zo.Y;
            HTCoordE zs2 = new HTCoordE(zs);
            zs2.Translate(zo);

            HTCoordE t = new HTCoordE();
            double de = ze.D2();
            double ds = zs2.D2();
            double dd = 1.0 - de * ds;
            t.X = (ze.X * (1.0 - ds) - zs2.X * (1.0 - de)) / dd;
            t.Y = (ze.Y * (1.0 - ds) - zs2.Y * (1.0 - de)) / dd;

            if (t.IsValid())
            {
                HTTransformation to = new HTTransformation();
                to.Composition(zo, t);

                drawRoot.Transform(to);
                view.Repaint();
            }
        }
コード例 #30
0
 internal override void Translate(HTCoordE t)
 {
     base.Translate(t);
     HTDrawNode child = null;
     for (IEnumerator i = Children(); i.MoveNext(); )
     {
         child = (HTDrawNode)i.Current;
         child.Translate(t);
         HTGeodesic geod = (HTGeodesic)geodesics[child];
         if (geod != null)
         {
             geod.Rebuild();
         }
     }
 }
コード例 #31
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal void Multiply(HTCoordE z)
 {
     double tx = x;
     double ty = y;
     x = (tx * z.X) - (ty * z.Y);
     y = (tx * z.Y) + (ty * z.X);
 }
コード例 #32
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 public HTCoordE(HTCoordE z)
 {
     this.Copy(z);
 }
コード例 #33
0
ファイル: HTDrawNode.cs プロジェクト: wuyanna/HyperTree
 internal virtual void Translate(HTCoordE t)
 {
     ze.Translate(oldZe, t);
 }
コード例 #34
0
ファイル: HTTransformation.cs プロジェクト: wuyanna/HyperTree
 internal HTTransformation()
 {
     P = new HTCoordE();
     O = new HTCoordE();
 }
コード例 #35
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
        internal void Transform(HTTransformation t)
        {
            HTCoordE z = new HTCoordE(this);
            Multiply(t.O);
            x += t.P.x;
            y += t.P.y;

            HTCoordE d = new HTCoordE(t.P);
            d.y = -d.y;
            d.Multiply(z);
            d.Multiply(t.O);
            d.x += 1;

            Divide(d);
        }
コード例 #36
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 internal double D(HTCoordE p)
 {
     return(Math.Sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y)));
 }
コード例 #37
0
ファイル: HTCoordE.cs プロジェクト: wuyanna/HyperTree
 void Sub(HTCoordE a, HTCoordE b)
 {
     x = a.X - b.X;
     y = a.Y - b.Y;
 }