# Final exam
https://3d.bk.tudelft.nl/courses/backup/geo1004/2020/data/finalexam.md
2020-04-17 09:00 - 11:00

Name:  
Student number:

This final exam is worth 30% of the final mark for the course.

There are **12 questions** in total, which have equal weight in the final mark of the exam. They are open questions, so we are not looking for a very specific answer. The mark given for each answer will range from 0 to 10 points depending on how well it answers the question.

First, you should download this file to your computer. Then, answer the questions on the downloaded file by writing your answer after the question. Use as many lines as you want. If this helps, you can draw something on a piece of paper, take a photo of it, give it a name, and upload it with the file.

If you have any questions, send Ken (kenohori#5365) a DM on Discord. Email (k.ohori@tudelft.nl) is also fine.

Submit your answers by uploading this file (with your answers) here:
https://www.dropbox.com/request/eFaaLLw8LKYK5XJPL2qE

This is a open-book exam. You can consult all course materials (handouts, videos, homework assignments) and anything else you find on the internet. Just don't communicate with others. We are expecting more or less unique answers!

You have **2 hours** to do this exam. Since there are 12 questions, that is roughly 10 minutes per question, so remember to manage your time. Files uploaded after 11:05 will not be accepted (so avoid problems by uploading at 11:00 at the latest). Set an alarm if you are concerned about this.

If something goes seriously wrong (eg sudden illness or internet going down), do not worry. Just contact Ken as soon as you can for alternative arrangements (most likely an oral exam through a video call).

If you're not too tired after the exam, how about filling in a short anonymous survey to help us improve the course? It is here:
https://francescanoardo.typeform.com/to/GyjSJY

## Questions

1. Give an example of the use of Euclidean, Cartesian and point set geometry in the representations that we saw throughout the course (one of each).

2. Consider homework assignment 1 (mesh orientation), where the input (a set of triangles representing parts of surfaces) models one building/shape, but that building has one surface missing. Explain why it is difficult to orient this mesh so that each triangle points outwards, and provide a solution.

3. Consider homework assignment 2 (voxels), but now the input meshes are instead isosurfaces representing a field. Explain at a high level:
  * how your code needs to be adapted?
  * how the output looks like? (what is different)

4. Consider homework assignment 3 (creation of 3D city model). We want to add one more type of feature to the model: cars. How would you approach the problem? Describe a potential solution.

5. Explain in your own words how boundary representation allows us to store 3D objects using 2D data structures.

6. You are asked to perform 3D building reconstruction. The resulting building models will be used to estimate the solar panel potential per building. Solar panel potential primarily depends on how much sunlight a building roof receives per year. How much sunlight a building receives depends on shadows (from the same building or other buildings) and the orientation of the roof surfaces (perpendicular to the solar rays is optimal). 
Define the relevant building model requirements and explain for each requirement why it is relevant for solar panel potential estimation.

7. What data structure would you use to store the data and control points for a triangular Bézier surface?
  * describe what the contents of the data structure look like
  * justify your choice of data structure

8. For what 3D shape does the medial axis transform consist of a single medial atom? And for what 3D shapes are all medial atoms co-linear?

9. Describe in your own words what the different ways to represent holes would look like when representing a polygon with a hole using 2D generalised maps.

10. If you have a footprint (see below, it has 1 interior boundary) and you extrude it to a height of 12m. Characterise the 3D shape you obtain, using the ISO19107-terminology. What type? how many surfaces? Their orientation?

 ┌───────────────────────────┐
 │▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫│
 │▫▫▫▫▫▫▫▫▫▫▫┌───────────┐▫▫▫│
 │▫▫▫▫▫▫▫▫▫▫▫│           │▫▫▫│
 └────────┐▫▫│           │▫▫▫│
          │▫▫└───────────┘▫▫▫│
┌─────────┘▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫│
│▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫▫│
│▫▫▫▫▫▫▫▫▫▫▫▫▫┌──────────────┘
│▫▫▫▫▫▫▫▫▫▫▫▫▫│               
└─────────────┘ 

11. Describe the geometry that is being represented in this IFC snippet. Provide as much information as you can obtain from it. Feel free to check the IFC documentation on the buildingSMART website.

`
#237=IFCEXTRUDEDAREASOLID(#236,#234,#230,6000.); 
#238=IFCDIRECTION((1.,0.,0.)); 
#239=IFCDIRECTION((-1.,0.,1.)); 
#240=IFCCARTESIANPOINT((-2500.,0.,3000.)); 
#241=IFCAXIS2PLACEMENT3D(#240,#239,#238); 
#242=IFCPLANE(#241);
#243=IFCHALFSPACESOLID(#242,.F.); 
#244=IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#237,#243);
`

12. You are given one building in IFC and you want to convert it to a CityJSON LoD2 building (with semantic surfaces). Describe what pitfalls you might encounter, and describe a methodology for doing so. You don't need to describe the low-level writing of JSON nor the reading of each part of the IFC file.
