CS 770/870 Assignment 4
• Due: Thursday, Oct. 3rd
• Late penalty: Fri: -5, Sat/Sun/Mon: -10, Tue: -20 Wed: -50 Thu: -100
Write a program to draw and control this robot:
Figure 1: .
Specifications
The robot has the following body parts:
PART |
COLOR |
SHAPE |
base |
beige |
box, 2x2x2 |
piston |
green |
cylinder, r=1,h=2 |
ball |
orange |
sphere,r=1 |
torso |
beige |
box, 2x1x4 |
head |
beige |
cylinder, r=0.75,h=1 |
eyes |
red,blue |
sphere, r=0.2 |
shoulder & elbow joints |
green |
cylinder, r=0.5,h=1 |
arm bones |
beige |
box, 1x1x2 |
The base of the robot should positioned with its center at (0 0 0).
The piston initially sits inside the base, and can be raised out of it. It can also turn.
The ball is attached to the top of the piston, and tilts forward/backward. The torso is attached to the sphere, and moves with it.
The head is linked to the torso. It can turn up/down (like a“yes”gesture) or le什/right (like a“no”gesture). The eyes are fixed to the head.
The shoulder joints are attached to the torso, and turn outward (so the upper arms move away from the body). The upper arms are attached to the shoulder joints.
The elbow joints are attached to the upper arms, and turn so that the elbows bend as human elbows do. The lower arms are attached to the elbow joints.
Controls
I am providing code, including a primitive keyboard-driven interface for adjusting the figure’s parameters. It uses these
keys:
• K : next parameter (shi什-K to go to LAST parameter)
• J : previous parameter (shi什-J to go the FIRST parameter)
• I : increase current parameter (shi什-I to set to its maximum value)
• M : decrease current parameter (shi什-M to set to its minimum value)
• SPACE : show the state of all the parameters.
These are implemented in robot_controller .cpp, robot_view .cpp, and scene_parameters .cpp. You can also control the camera:
• UP/DOWN arrow: move eye up/down, keeping look-at point fixed
• LEFT/RIGHT arrow : move eye le什/right, keeping look-at point fixed
• Shift UP/DOWN arrow: move eye forward/backward. Finally, you can toggle flags in the Robot_View class:
• S : show/hide the body parts
• G : show/hide the reference grid
• B : show/hide the basis vectors
Your Tasks
1. [45 points] Implement the Shape_Maker::cylinder(float n_slats ) method, in the file shapes.cpp. This should return a Mesh* with three Vertex_Array* parts: the base, the top, and the round sides of a cylinder (it currently returns a cube!).
The cylinder has radius 1, has its axis along the z axis, and extends from z=-1 to z=+1. The round sides should be approximated by n_slats vertical rectangles, stored in a GL_TRIANGLE_STRIP. The top and bottom are each a corresponding polygon with n_slats sides, stored in a GL_TRIANGLE_ FAN.
2. [55 points] The draw_ robot () function in robot_view .cpp currently draws the torso and le什 upper arm of the figure. Extend it to draw all the parts.
Turn in Your Work
When you are done, go to mycourses.unh .edu, find CS770/870 assignment 4,click the“Submit”button, and upload robot_view .cpp and shapes.cpp. If you modified any other files, upload them too.
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。