ECE 4122/6122 OpenGL with OBJ files and Multiple Objects


ECE 4122/6122 Lab 3: OpenGL with OBJ files and Multiple Objects 
(100 pts) 
Category: 3D Graphics 
Due: Tuesday October 22th
, 2023 by 11:59 PM 

Objective: 
To create a dynamic 3D graphics application using lighting, shading, model transformations, and 
keyboard inputs. 
Description: 
You can use the code from tutorial09_Assimp to create a C++ application that loads in the obj files for 
the 3D chess pieces and the chess board. 
Modify the keyboard inputs so that (5 points each) 
1) ‘w’ key moves the camera radially closer to the origin. 
2) ‘s’ key moves the camera radially farther from the origin. 
3) ‘a’ key rotates the camera to the left maintaining the radial distance from the origin. 
4) ‘d’ key rotates to camera to the right maintaining the radial distance from the origin. 
5) The up arrow key radially rotates the camera up. 
6) The down arrow radially rotates the camera down. 
7) The ‘L’ key toggles the specular and diffuse components of the light on and off but leaves the 
ambient component unchanged. 
8) Pressing the escape key closes the window and exits the program 
Points grading: 
• 30 Points – loading obj files and displaying the chess pieces. 
• 30 Points – rotating and placing the chess pieces in the correct location and orientation 
• 40 Points – keyboard control described above 
• 5 pts extra credit the textures are applied correctly to the chess pieces and chessboard. 
• 5 pts extra credit make a short, narrated video of your program in action. (include it in the zip 
file) 
 Turn-In Instructions 
Create a Lab3 folder at the same level as the other tutorialxx _xx folders and place your code and the attached 
folders containing the obj file information in that folder. 
 
Modify the top level CMakeLists.txt file to build your Lab3 application. You can make any needed changes 
to the files in the common folder to handle the keyboard input. 
 
Zip up the folders Lab3 and common into Lab3.zip and upload this zip file on the assignment section of 
Canvas. When the TAs replace the existing folders with yours and the code should compile and run correctly. 
You can also include a short, narrated video of your program in action. 
 
Grading Rubric: 
If a student’s program runs correctly and produces the desired output, the student has the potential to get a 100 
on his or her homework; however, TA’s will look through your code for other elements needed to meet the lab 
requirements. The table below shows typical deductions that could occur. 
 
AUTOMATIC GRADING POINT DEDUCTIONS PER PROBLEM: 
Element Percentage 
Deduction 
 Details 
Does Not Compile 40% Code does not compile on PACE-ICE! 
Does Not Match Output Up to 90% The code compiles but does not produce correct outputs. 
Clear Self-Documenting 
Coding Styles 
Up to 25% This can include incorrect indentation, using unclear variable names, 
unclear/missing comments, or compiling with warnings. (See 
Appendix A) 
 
LATE POLICY 
Element Percentage Deduction Details 
Late Deduction Function score – 0.5 * H H = number of hours (ceiling function) passed 
deadline 
 Appendix A: Coding Standards 
Indentation: 
When using if/for/while statements, make sure you indent 4 spaces for the content inside those. Also make 
sure that you use spaces to make the code more readable. 
For example: 
for (int i; i < 10; i++) 

 j = j + i; 

 
If you have nested statements, you should use multiple indentions. Each { should be on its own line (like the 
for loop) If you have else or else if statements after your if statement, they should be on their own line. 
for (int i; i < 10; i++) 

 if (i < 5) 
 { 
 counter++; 
 k -= i; 
 } 
 else 
 { 
 k +=1; 
 } 
 j += i; 

 
Camel Case: 
This naming convention has the first letter of the variable be lower case, and the first letter in each new word 
be capitalized (e.g. firstSecondThird). 
This applies for functions and member functions as well! 
The main exception to this is class names, where the first letter should also be capitalized. 
Variable and Function Names: 
Your variable and function names should be clear about what that variable or function represents. Do not use 
one letter variables, but use abbreviations when it is appropriate (for example: “imag" instead of 
“imaginary”). The more descriptive your variable and function names are, the more readable your code will 
be. This is the idea behind self-documenting code. 
 File Headers: 
Every file should have the following header at the top 
/* 
Author: your name 
Class: ECE4122 or ECE6122 (section) 
Last Date Modified: date 
 
Description: 
 
What is the purpose of this file? 
 
*/ 
 
Code Comments: 
 
 1. Every function must have a comment section describing the purpose of the function, the input and 
output parameters, the return value (if any). 
2. Every class must have a comment section to describe the purpose of the class. 
3. Comments need to be placed inside of functions/loops to assist in the understanding of the flow of 
the code. 
 

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值