// *********** Natasha Kellaway's Objects for the object library ************ // Function: Draws a drumkit cymbal, with or without a stand /* The scale of the cymbal can be chosen by the user.The bigger the scaleFactor, the bigger the cymbal becomes. The color of the cymbal is automatically gold. The user can decide whether or not the cymbal has a stand. nkellawCymbal takes the parameters in the following order: 1. if the cymbal has a stand 2. stand height (only important if the cymbal has a stand) The initial view is looking at the cymbal from the bottom. So, if it has a stand, the initial view is looking at the bottom of the stand with the length of the stand and the cymbal going back along the z-axis. If the user specifies that a stand is present, the color of the stand is automatically black. The color of the stand is automatically black. The origin lies at the center at the center of the stand. */ void nkellawaCymbal(bool hasStand, GLfloat standHeight); /* Function: Draws a drum kit including: a stool, a snare drum, a floor tom 2 wing toms,a bass drum, a ride cymbal, a crash cymal, and a hi-hat nkellawaDrumkit takes the parameters in the following order: 1. color of the drum heads 2. color of the drum sides 3. color of the stool seat 4. radius of the snare drum 5. height of the snare drum 6. height of the right (ride) cymbal The user gets to choose the color scheme of the drumkit. Once the user chooses the snare drum radius and height, the other 4 drums' (bass, floor tom, left wing tom, right wing tom) dimensions are based off of these measurements. Likewise, the user can choose the height of the right (ride) cymbal, and the other 2 cymbals' (ride cymbal and hi-hat) dimensions are based off of that. nkellawaDrumkit takes advantage of 2 helper methods -- nkellawaSnareDrum and nkellawaCymbal -- each which use a helper method to draw the legs and stands respectively. The details for these helper methods are stored in nkellawaSnareDrum.cc and nkellawaCymbal.cc, as these two components specify 2 particular objects. */ void nkellawaDrumkit(twTriple headDrumColor, twTriple sideDrumColor, twTriple seatColor, GLfloat snareRadius, GLfloat snareHeight, GLfloat rightCymbalHeight); // Function: Draws a drumstick /* The length of the drumstick can be chosen by the user. The color of the drumstick is automatically light brown. The user can decide whether or not the cymbal has a stand. The only argument for nkellawaDrumstick is: 1. the length The initial view is looking at the cymbal from the bottom. Of the drumstick. The shaft and tip of the drumstick point back along the z-axis. The origin lies in the center of the drumstick shaft. */ void nkellawaDrumstick(GLfloat length); // Function: Draws a snare drum, with or without legs /* The radius of the drum head and the height of the drum can be chosen by the user. Also, the color of the drum head and the side of the drum can be chosen by the user. The user can decide whether or not the drum has legs. It takes the parameters in the following order: 1. radius of drum head 2. height of drum 3. color of drum heads 4. color of drum side 5. if the drum has legs The initial view shows only the top drum head, with the body (and legs) pointing back along the z-axis. The original lies at the center of the bottom drum head. nkellawaSnareDrum employs a helper method called nkellawaDrumLeg if the user specifies that they want legs on the drum. nkellawaDrumLeg takes five parameters in the following order: 1. x-axis translation of the drum leg 2. y-axis translation of the drum leg 3. z-axis translation of the drum leg 4. radius of the drum 5. height of the drum The color of the legs is automatically black. */ void nkellawaSnareDrum(GLfloat radius, GLfloat height, twTriple headColor, twTriple sideColor, bool hasLegs);