Beispiel #1
0
        public void LinkRing(Ring r, Vector2 alphaBeta, float[] sideDegreesPercent)
        {
            /* pre: "sideDegreesPercent.length" must be equal to "r.sideDegreesPercent.length"
             *
             * post: the implicit parameter has been set according to the parameters.
             * 		 Its vertices has been calculated in order to follow Ring r in space.
             */
            if (sideDegreesPercent.Length != r.SideDegreesPercent.Length)
                throw new RingException ("sideDegreesPercent.length must be equal to Ring.sideDegreesPercent.length.");

            Vector3 linkStartCenter = (r.Direction * r.SideSize) + r.startCenter;

            this.alphaBeta = alphaBeta;
            this.startCenter = linkStartCenter;
            this.sideSize = r.SideSize;
            this.sideDegreesPercent = sideDegreesPercent;

            this.vertices1 = r.vertices2;
            Vector3 newCenter = (AlphaBetaToDirection(alphaBeta) * r.SideSize) + linkStartCenter;
            this.vertices2 = CalculateVertices (newCenter, alphaBeta,
                                                sideDegreesPercent, r.SideSize);
        }
Beispiel #2
0
 public Ring Clone()
 {
     //return a clone of the object
     Ring r = new Ring ();
     r.startCenter = startCenter;
     r.sideSize = sideSize;
     r.alphaBeta = alphaBeta;
     r.sideDegreesPercent = (float[])sideDegreesPercent.Clone ();
     r.vertices1 = (Vector3[]) vertices1.Clone ();
     r.vertices2 = (Vector3[]) vertices2.Clone ();
     return r;
 }