Answers.Body: <blockquote>
  <p>other resources/advice are welcome</p>
  </blockquote>
  <p>One topic worthy of teaching related to 3d graphics is <a href="https://en.wikipedia.org/wiki/Collision_detection" rel="nofollow noreferrer">collision detection</a>.</p>
  <p>Many people get it wrong on their first and even first few attempts. To really get it correct you have to study the mechanics of how the real world and modeled world differ and how to correctly model the problem.</p>
  <p>If you are doing 3d graphics related to game design then these are also hard problems.</p>
  <ol>
  <li>Camera position. In video games I can't count how many times the camera position made it harder to play the game.</li>
  <li>Ladders. Some games don't even show a character climbing a ladder because it is so hard.</li>
  <li>Doors. Just watch this video. <a href="https://www.youtube.com/watch?v=AYEWsLdLmcc" rel="nofollow noreferrer">Why video game doors are so hard to get right</a></li>
  </ol>
  <hr />
  <p><strong>EDIT</strong></p>
  <p>Comments for which bounty was awarded.</p>
  <p>I don't think I can do better than some of the answers to this <a href="https://gamedev.stackexchange.com/q/12299/108025">question</a> on the Game Dev sister site.</p>
  <p>A more detailed write up noted in comment with above answer: <a href="https://legends2k.github.io/note/cg_resources/" rel="nofollow noreferrer">Computer Graphics - Resource Materials for self-study</a></p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-09-17T13:38:26.487Z
Answers.Text: Awarding bounty for your links in the comments above. Thanks!
Answers.UserDisplayName: TomKern
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-09-06T12:05:35.413Z
Answers.LastActivityDate: 2021-09-17T14:00:51.630Z
Answers.LastEditDate: 2021-09-17T14:00:51.630Z
Answers.UserDisplayName: Guy Coder
Body: <p>I'm a math professor who will be teaching an undergraduate course in computer graphics next semester, and am looking for some resources to help me structure my course, specifically a textbook, although other resources/advice are welcome.</p>
  <p>My students will have knowledge of Python, Java, and linear algebra. I would like to be able to spend some time on the following topics:</p>
  <ul>
  <li>Building a basic 3d renderer (rasterizer) by hand in some programming language, using just a basic linear algebra library</li>
  <li>The theory of color (fun, would probably only be a week)</li>
  <li>Programming shaders in a common shader language</li>
  </ul>
  <p>Is there a text that would work for some/all of this?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-11T10:26:54.223Z
Comments.Text: Are you looking for a more mathematical book that covers using programs to model computer graphics or are you looking for a book that covers more real world programming problems that use computer graphics? In other words are you looking to come from the bottom up or the top down? The problem with top down books is that they will have to drill all the way down from the top to get to the mathematical models, the problem with bottom up books is that they rarely connect the concepts to real world problems. Continued.
Comments.UserDisplayName: Guy Coder
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-11T10:32:09.290Z
Comments.Text: There might be some books in the middle but I have not looked for books on computer graphics for some time as I learned the basics for my degree many decades ago and have been able to keep a pulse the on the progress over time so have a better understanding of the landscape and where to find resources to solve my problems for which are never specifically covered in books.
Comments.UserDisplayName: Guy Coder
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-11T13:30:38.540Z
Comments.Text: I want my students to do practical projects to implement really basic graphics concepts from scratch. I imagine building a 3d rasterizer will take several weeks: introducing the graphics library, drawing lines, projecting from 3d, camera transformations, z-buffers, anti-aliasing. Similarly when we talk about shaders I want to focus on implementing the basics by hand: Lambertian and Blinn-Phong lighting, normal maps, vertex displacement, image-based lighting etc. I would want to talk about the basic mathematical theory, then we implement the theory by hand in code.
Comments.UserDisplayName: TomKern
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-11T13:56:26.483Z
Comments.Text: I don't think I can do better than some of the answers to this [question](https://gamedev.stackexchange.com/q/12299/108025) on the Game Dev sister site. If you find a part of that of value then post that as an acceptable answer. I am not after points here just useful information. Remember that a bounty is not for an answer but for more people to look at your question.
Comments.UserDisplayName: Guy Coder
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-11T14:02:22.010Z
Comments.Text: The link above also notes a more detailed write up at [Computer Graphics - Resource
  Materials for self-study](https://legends2k.github.io/note/cg_resources/) HTH
Comments.UserDisplayName: Guy Coder
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-11T15:31:59.110Z
Comments.Text: I would suggest moving to the [CS-SE](https://cs.stackexchange.com/) since you want a math-theory outlook and the folks there are more theory centered than out here
Comments.UserDisplayName: Rushi
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2021-09-17T13:55:39.323Z
Comments.Text: Thanks for awarding the bounty. Really was not expecting it. :)
Comments.UserDisplayName: Guy Coder
Tags: <curriculum-design><resource-request><textbook>
Title: Computer Graphics Textbook Recommendations
ThreadText: # Computer Graphics Textbook Recommendations
  
  (Asked by: username_0 on 2021-09-03)
  
  I'm a math professor who will be teaching an undergraduate course in computer graphics next semester, and am looking for some resources to help me structure my course, specifically a textbook, although other resources/advice are welcome.
  
  My students will have knowledge of Python, Java, and linear algebra. I would like to be able to spend some time on the following topics:
  
  * Building a basic 3d renderer (rasterizer) by hand in some programming language, using just a basic linear algebra library
  * The theory of color (fun, would probably only be a week)
  * Programming shaders in a common shader language
  
  Is there a text that would work for some/all of this?
  
  **Tags:** curriculum-design, resource-request, textbook
  
  > **Comments:**
  > **username_1**: Are you looking for a more mathematical book that covers using programs to model computer graphics or are you looking for a book that covers more real world programming problems that use computer graphics? In other words are you looking to come from the bottom up or the top down? The problem with top down books is that they will have to drill all the way down from the top to get to the mathematical models, the problem with bottom up books is that they rarely connect the concepts to real world problems. Continued.  
  > **username_1**: There might be some books in the middle but I have not looked for books on computer graphics for some time as I learned the basics for my degree many decades ago and have been able to keep a pulse the on the progress over time so have a better understanding of the landscape and where to find resources to solve my problems for which are never specifically covered in books.  
  > **username_0**: I want my students to do practical projects to implement really basic graphics concepts from scratch. I imagine building a 3d rasterizer will take several weeks: introducing the graphics library, drawing lines, projecting from 3d, camera transformations, z-buffers, anti-aliasing. Similarly when we talk about shaders I want to focus on implementing the basics by hand: Lambertian and Blinn-Phong lighting, normal maps, vertex displacement, image-based lighting etc. I would want to talk about the basic mathematical theory, then we implement the theory by hand in code.  
  > **username_1**: I don't think I can do better than some of the answers to this [question](https://gamedev.stackexchange.com/q/12299/108025) on the Game Dev sister site. If you find a part of that of value then post that as an acceptable answer. I am not after points here just useful information. Remember that a bounty is not for an answer but for more people to look at your question.  
  > **username_1**: The link above also notes a more detailed write up at [Computer Graphics - Resource Materials for self-study](https://legends2k.github.io/note/cg_resources/) HTH  
  > **username_2**: I would suggest moving to the [CS-SE](https://cs.stackexchange.com/) since you want a math-theory outlook and the folks there are more theory centered than out here  
  > **username_1**: Thanks for awarding the bounty. Really was not expecting it. :)  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2021-09-06. Score: 1
  
  > other resources/advice are welcome
  
  One topic worthy of teaching related to 3d graphics is [collision detection](https://en.wikipedia.org/wiki/Collision_detection).
  
  Many people get it wrong on their first and even first few attempts. To really get it correct you have to study the mechanics of how the real world and modeled world differ and how to correctly model the problem.
  
  If you are doing 3d graphics related to game design then these are also hard problems.
  
  1. Camera position. In video games I can't count how many times the camera position made it harder to play the game.
  2. Ladders. Some games don't even show a character climbing a ladder because it is so hard.
  3. Doors. Just watch this video. [Why video game doors are so hard to get right](https://www.youtube.com/watch?v=AYEWsLdLmcc)
  
  ---
  
  **EDIT**
  
  Comments for which bounty was awarded.
  
  I don't think I can do better than some of the answers to this [question](https://gamedev.stackexchange.com/q/12299/108025) on the Game Dev sister site.
  
  A more detailed write up noted in comment with above answer: [Computer Graphics - Resource Materials for self-study](https://legends2k.github.io/note/cg_resources/)
  
  > **Comments:**
  > **username_0**: Awarding bounty for your links in the comments above. Thanks!  
  
  ---
  
  