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); }
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; }