An example of my research interest:
The spinning donut

Spinning donut

 I have been crazy about math and its application in computer science, specifically on computer graphics and math-intensive programming.
 There is an example of the type of project that I will love to work on: Spinning donut, which is created by Andy Sloane in 2006. A few years later, another YouTuber made a video(youtube) to explain how it works interestingly. Although the animation seems easy to understand, it involves a significant amount of mathematical knowledge to render this, such as trigonometric functions and matrixes.
 To summarize how the animation was rendered, first of all, we need to understand that the animation we see feels like 3D while it is 2D, this very nature indicates that we need to project 3D coordinates (X, Y, Z) into 2D coordinates (X, Y) by using trigonometric functions because computer screen has only 2D.

graphical explanation projection

Figure 1: Projecting 3D object into 2D

 In geometry, the shape of a donut is called a torus. Since torus is solid of revolution, we need to draw a 2D circle that orbits around a fixed axis in 3D space. After the torus is created, we need to rotate the central axis of the torus around its midpoint to create the "spinning donut" view, and this is achieved by the use of a rotation matrix. Therefore, we will be able to calculate the coordinates of the surface of the donut at any given time. Here comes the most interesting part. In the field of art, one of the most popular ways to draw 3D painting is manipulating the luminosity of each part. Similarly, after obtaining the coordinates of each pixel, we can calculate the surface normal. If the surface normal indicates a specific pixel is facing against the light, its luminosity is higher, vice versa. Finally, so how do we represent the luminosity only using ASCII? If we assume the background is black and the font color is white, the character with a higher "density" presents a higher luminosity to our eyes. For example, ".,-~:;=!*#$@" is the list of characters from lower to higher luminacity. Wala! now we have a spinning donut!
 Although I do not have the spinning donut project in my GitHub, I do have some similar projects in it and hope you enjoy these contents as well!