CS 770/870  draw and control this robot

37 阅读2分钟

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:

PARTCOLORSHAPE
basebeigebox, 2x2x2
pistongreencylinder, r=1,h=2
ballorangesphere,r=1
torsobeigebox, 2x1x4
headbeigecylinder, r=0.75,h=1
eyesred,bluesphere, r=0.2
shoulder & elbow jointsgreencylinder, r=0.5,h=1
arm bonesbeigebox, 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 代 写CS 770/870  draw and control this robot 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.

  1.  [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.

WX:codinghelp