程序代写代做代考 arm html Assignment #2 (12 marks)

Assignment #2 (12 marks)
Written parts are exercises, no submission; solutions posted progressively over time. Programming part due:Tuesday, Dec. 8, 11:45 p.m.​ via electronic submission.
Programming (12 marks): Shading and controlling a robotic arm
Write a program in robotArm.js and robotArm.html to display and control a robotic arm to pick up and move a sphere. Check out the sample code by unzipping:
https://www.dropbox.com/s/d0kvrse6w2utgy5/robotArmSample.zip?dl=0
and look into the baseline scripts and associated shaders. Make sure that all the files reside in the same directory when you load the WebGL code into your browser. You are to build your program based on them, using the same file names as they are now. On the two files robotArm.js and robotArm.html need to be modified.
The robot is composed of three parts: the base, a lower arm, and an upper arm. First, run the sample code and see what it does by interacting with the interface and observing how the robot arm’s movements are altered. Pay special attention to the transformations used to control which part to rotate and how the rotation is done. Note that no collision detection needs to be handled. Read Section 9.3 of the text on hierarchical models to learn more.
You have four tasks to complete:
● ​[2 mark] Model the Robot Arm: ​Change the dimensions of the two arms to 2 × 0.3​2 and the base shape to a cylinder with height 0.5 and ​both ​base radii 0.5, looking roughly like the model shown in the blow figure. You are free to find resources, even a pre-defined model, for creating the cylinder. If you used someone else’s model/code, cite it.
● ​[5 marks] Illumination and shading: ​Add Phong local illumination and smooth polygon shading to make the robot arm object look more realistic. It is encouraged to specify material properties that resemble those of a metallic object. You are free to define the lighting parameters. No transparency. But do make sure that there is ​specular highlight ​somewhere o​ n the model.

● ​[2 marks] Two views: ​Add an additional toggle menu which alternates between “Top View” and “Side View” when the item is selected. This menu item specifies which view to use for the robot arm. Side view allows you to view the robot from the side (like in the figure above) and top view is from the top. For the top view, select your view and ​parallel projection parameters properly so that in top view,
o The whole robot is within your view for any possible robot movement. o The robot base is located at the center of the window.
● ​[3 marks] Fetch a sphere object: ​Modify your program so that it accepts six arguments as text fields instead of the original sliders:
old_x old_y old_z new_x new_y new_z
Also, add a pressable button named “Fetch”. When this button is pressed, it should first display a solid sphere with radius 0.15, centered at (old_x, old_y, old_z), and with material and reflectance properties defined at your choice. Feel free to use any resources to model the sphere object, as you did for the cylinder base. Note that the robot arm should be displayed from the start, even before pressing the button.
Then, starting from its initial position, the robot base and arms should undergo appropriate motion (i.e., rotations, similarly to what is performed on the sample code provided) so that the tip of the upper arm touches the sphere. At this moment, the sphere should be picked up and attached to the upper arm and then it is moved, by having the robot base and arms undergo appropriate motions again, to the new location (new_x, new_y, new_z). When this is done, the robot should return to its initial position and the sphere should remain at its new location (no gravity!).
You may assume that both input sphere locations are reachable by the robot arm. The motion of the arm should be smooth and shown at appropriate speed.
What to submit: ​You should modify the sample programs into your own code, adding extra files, if necessary. Your program should implement the two views, the input text fields, and the “fetch” button. Submit your entire folder zipped in a single file called robotArm.zip. You may also include a README for documentation and/or instructions.