コード例 #1
0
        private double CalculateYOffset(ISingleDepthNodeRenderer nodeRenderer)
        {
            double yOffset = nodeRenderer.NodeIndex * NodeSpacing; // Find the distance from the origin.
            double diameter = Radius * 2;

            if (yOffset > diameter)
            {
                yOffset = (2 * diameter) - yOffset; // If the distance from the origin is great then the diameter, then the circle of nodes is coming back around. This is a simplification of (diameter - (distanceFromOrigin - diameter)).
            }

            return yOffset;
        }
コード例 #2
0
        private double CalculateYOffset(ISingleDepthNodeRenderer nodeRenderer)
        {
            double yOffset  = nodeRenderer.NodeIndex * NodeSpacing; // Find the distance from the origin.
            double diameter = Radius * 2;

            if (yOffset > diameter)
            {
                yOffset = (2 * diameter) - yOffset; // If the distance from the origin is great then the diameter, then the circle of nodes is coming back around. This is a simplification of (diameter - (distanceFromOrigin - diameter)).
            }

            return(yOffset);
        }
コード例 #3
0
        public Point GetLocation(ISingleDepthNodeRenderer nodeRenderer)
        {
            double xOffset = CalculateXOffset(nodeRenderer);
            double yOffset = CalculateYOffset(nodeRenderer);

            xOffset -= nodeRenderer.Skin.NodeSkinWidth / 2;  // Centre the node image.
            yOffset -= nodeRenderer.Skin.NodeSkinHeight / 2; // Centre the node image.

            Point nodeLocation = new Point();

            nodeLocation.X = OriginX + xOffset;
            nodeLocation.Y = OriginY + yOffset;

            return(nodeLocation);
        }
コード例 #4
0
        /// <summary>
        /// Method represents the calculation sqrt(R^2 - (R - y)^2) where R is the radius and y is the 'DistanceFromOrigin'.
        /// </summary>
        /// <param name="nodeRenderer"></param>
        /// <returns></returns>
        private double CalculateXOffset(ISingleDepthNodeRenderer nodeRenderer)
        {
            double distanceFromOrigin = CalculateYOffset(nodeRenderer);

            double ySquared = Radius - distanceFromOrigin; // (R - y)

            ySquared = ySquared * ySquared;                // (R - y) ^ 2

            double rSquared = Radius * Radius;             // R ^ 2

            double xSquared = rSquared - ySquared;         // R^2 - (R - y)^2

            double xOffset = Math.Sqrt(xSquared);

            if (nodeRenderer.NodeIndex > (nodeRenderer.NodeCount / 2))
            {
                xOffset = -1 * xOffset;
            }

            return(xOffset);
        }
コード例 #5
0
        /// <summary>
        /// Method represents the calculation sqrt(R^2 - (R - y)^2) where R is the radius and y is the 'DistanceFromOrigin'.
        /// </summary>
        /// <param name="nodeRenderer"></param>
        /// <returns></returns>
        private double CalculateXOffset(ISingleDepthNodeRenderer nodeRenderer)
        {
            double distanceFromOrigin = CalculateYOffset(nodeRenderer);

            double ySquared = Radius - distanceFromOrigin; // (R - y)
            ySquared = ySquared * ySquared; // (R - y) ^ 2

            double rSquared = Radius * Radius; // R ^ 2

            double xSquared = rSquared - ySquared; // R^2 - (R - y)^2

            double xOffset = Math.Sqrt(xSquared);

            if (nodeRenderer.NodeIndex > (nodeRenderer.NodeCount / 2))
            {
                xOffset = -1 * xOffset;
            }

            return xOffset;
        }
コード例 #6
0
        public Point GetLocation(ISingleDepthNodeRenderer nodeRenderer)
        {
            double xOffset = CalculateXOffset(nodeRenderer);
            double yOffset = CalculateYOffset(nodeRenderer);

            xOffset -= nodeRenderer.Skin.NodeSkinWidth / 2; // Centre the node image.
            yOffset -= nodeRenderer.Skin.NodeSkinHeight / 2; // Centre the node image.

            Point nodeLocation = new Point();
            nodeLocation.X = OriginX + xOffset;
            nodeLocation.Y = OriginY + yOffset;

            return nodeLocation;
        }