写作COMP3170编程语言、 辅导java留学生

” 写作COMP3170编程语言、 辅导java留学生Assignment 1 QuadcopterTopics covered: Drawing 2D meshes 2D transformations: rotation, translation, scale Scene graph 2D camera: view and projection matrices, aspectTask DescriptionYour task is to implement a simple scene with a landscape of houses and a quadcopterdrone that flies overhead (following the mouse). The drone includes a spy camera that canbe activated to get a close-up view of the map below.Figure 1: World cameraFigure 2: Drone spy CameraFrameworkFor this assignment, you will need the Eclipse project containing the JOGL and JOMLlibraries that we have been using in the workshop. See the week 1 workshop for instructionsto download and install this project.A basic framework for the assignment has been provided in GitHub Classroom: httpss://classroom.github.com/a/0sOe5CgTClone this framework into your own Github account.It contains the files: Ass1.java the main class implementing a JFrame and a GLEventListener House.java a class that draws a house InputManager.java a class that provides a simple interface for keyboard and mouse input Transform.java a class that provides methods to create 2D translation, rotation and scalematrices. vertex.glsl / fragment.glsl a very simple shaderTo complete the assignment, you will need to edit these files and add further classes of yourown (although you probably shouldnt need to change the InputManager and Transformclasses).ComponentsYou are required to complete each of the components below. Each component contributesa percentage towards your Completeness mark, as described below.Houses (10%)The basic house provided should be modified so that the roof is a different colour to themain building, as shown in the screenshots above. Choose whatever colours you like.Landscape (10%)The world should be 20×20 square field with 20 houses randomly positioned in it. Thebackground should be a suitable shade of colour.World camera (20%)The basic world camera should show the entire 20×20 world, regardless of the size of thewindow. The world should look square and not be stretched. If the window is not square,the shortest axis should fit the size of the world, and the world should be centred in thewindow, as shown below.Figure 3: World camera. Window is wider than it is tall.Figure 4: World camera. Window is wider than it is tall.Drone (20%)The drone has a body and four rotors (in a different colour). The rotors are animated to spinat a constant speed. Neighbouring rotors spin in opposite directions, as shown below.Figure 5: The quadcopter drone. Arrows show the direction of spin.Mouse control (20%)The drone is controlled using the mouse: It rotates (at a constant speed) so that the front of the drone faces the mouse pointer. It moves forward (at a constant speed) until it is within some threshold of the mousepointer, then stops.Hint: InputManager.getMousePosition() returns the mouse position in NDC coordinates.You need to convert this to a different coordinate frame.Spy camera (20%)If the mouse button is held down, the view switches to the spy camera. This camera iscentred at the drones position and shows a 2×2 area of the world underneath the drone(the drone itself should not be shown). If the window is not square, the image should becentred in the window, and the area outside the 2×2 field of view should be black:Figure 6: The spy camera. The area outside the 2×2 field of view should be black.SubmissionFiles will be submitted using Github Classroom. Your most recent commit to the repositorybefore the assignment Deadline will be marked. No late submissions will be accepted,except in the case of special consideration (which requires a formal application). Last minuteproblems with Git are not an excuse for late submission. Remember to commit and pushyour work regularly as you go.MarksYour marks will be calculated using three components: Completeness: The total value of the components (listed above) that have been attempted. Correctness: Whether your code is correctly implemented (according to the rubric below) Clarity: Whether your code is easy to understand (according to the rubric below)The final mark will be calculated as:Final mark = Completeness * (60 * Completeness + 40 * Correctness)So, for example if you attempt 80% of the features above, with perfect correctness (100%)and slightly sloppy code (70%), your mark would be:Final mark = 80%* (60 * 100% + 40 * 70%) = 70.4RubricGrade Correctness ClarityA+(100%)Excellent work. Code is free from anyapparent errors. Problems are solved ina suitable fashion.Good consistent style. Well structured commented code. Appropriate division intoclasses and methods, to makeimplementation clear.B(80%)Very good work. Code has minor errorswhich do not significantly affectperformance.Code is readable with no significant codesmell.Code architecture is adequate butcould be improved.C(70%)Good work. Code has one or two minorerrors that affect performance.Problems May be solved in ways thatare convoluted or otherwise show lackof understanding.Code is readable but has some code-smellthat needs to be addressed. Codearchitecture is adequate but could beimproved.D(60%)Poor. Code is functional but containsmajor flawsSignificant issues with code quality.Inconsistent application of style. Poorreadability with code-smell issues. Codearchitecture could be improved.F(40%)Code compiles and run, but majorelements are not functional.Significant issues with code quality.Inconsistent Application of style. Poorreadability with code-smell issues. Messycode architecture with significantencapsulation violations.0% Code does not compile.Major issues with code quality. Majorreadability problems and code smellthroughout. Messy code architecture withsignificant Encapsulation violations.请加QQ:99515681 或邮箱:99515681@qq.com WX:codehelp

添加老师微信回复‘’官网 辅导‘’获取专业老师帮助,或点击联系老师1对1在线指导