master
Miloslav Ciz 10 months ago
parent 02f5ac44fc
commit 486c142b76

@ -1,8 +1,8 @@
# Temple OS
Temple OS is a funny [operating system](os.md) made by a schizophrenic guy [Terry Davis](terry_davis.md) who has become a [meme](meme.md) and achieved legendary status for this creation in the internet tech circles as it's extremely impressive that a single person creates such a complex OS and also the OS features and the whole context of its creation are quite funny. It has a website at https://templeos.org.
Temple OS is a [funny](fun.md) [operating system](os.md) made by a [schizo](schizo.md) guy [Terry Davis](terry_davis.md) who has become a [meme](meme.md) and achieved legendary status for this creation in the [Internet](internet.md) tech circles as it's extremely impressive that a single man creates such a complex OS and also the OS features and the whole context of its creation are quite funny. It has a website at https://templeos.org.
According to Terry, God commanded him to write TempleOS and guided him in the development: for example it was demanded that the resolution be 640x480. It is written in [HolyC](holy_c.md), Terry's own language. The OS comes with GUI, 2D and 3D library, [games](game.md) and even a program for communicating with God.
According to Terry, God commanded him to write TempleOS and guided him in the development: for example it was demanded that the resolution be 640x480. It is written in [HolyC](holy_c.md), Terry's own [programming language](programming_language.md). The OS comes with GUI, 2D and 3D library, [games](game.md) and even a program for communicating with God.
Notable Temple OS features and programs are:

@ -86,11 +86,11 @@ ___1_|/_...--''____/____
- **subtraction** (vector - vector = vector): Subtracting vector *v* from vector *u* is the same as adding *v* times -1 (i.e. *v* with opposite direction) to *u*.
- **multiplication**: There are several ways to "multiply" vectors.
- **scalar multiplication** (scalar * vector -> scalar): Multiplying vector *u* with scalar *x* means scaling the vector *v* along its direction by the amount given by *x* -- for this we simply multiply each component of *u* by *x*, e.g. if *x = 0.5*, then *u * x = [7 * 0.5,6 * 0.5] = [3.5,3]*.
- **scalar multiplication** (scalar * vector -> vector): Multiplying vector *u* with scalar *x* means scaling the vector *v* along its direction by the amount given by *x* -- for this we simply multiply each component of *u* by *x*, e.g. if *x = 0.5*, then *u * x = [7 * 0.5,6 * 0.5] = [3.5,3]*.
- **[dot product](dot_product.md)** (vector * vector -> scalar): Dot product of vectors *u* and *v* is a very common operation and can be used to determine the angle between the vectors, it is denoted as *u . v* and is computed as *u . v = u.x * v.x + u.y * v.y + u.z * v.z + ...*; the value this gives is the [cosine](cos.md) of the angle between the vectors times the magnitude of *u* times the magnitude of *v*. I.e. if *u* and *v* have length of 1 (are normalized), we directly get the cosine of the angle and can get the angle with the [acos](acos.md) function. This is used in many situations, e.g. in graphics [shaders](shader.md) dot product is used to determine the angle at which light hits a surface which says how bright the surface will appear.
- **[cross product](cross_product.md)** (vector * vector -> vector): Cross product basically gives us a vector that's perpendicular to the input vectors.
- **vector matrix multiplication** (vector * matrix -> vector): Multiplying a vector by matrix can achieve e.g. a specific transformation of the vector (such as rotating it). For details see the article about [matrices](matrix.md).
- **[normalization](normalization.md)**: Normalization forces a vector's magnitude to a certain amount, typically 1 -- we do this when we have a vector and simply want to just discard its magnitude because we only care about direction (e.g. when doing a dot product to get an angle between vectors we first normalize them). To normalize a vector (to length 1) simply divide all its components by the current magnitude, e.g. *normalized(u) = [u.x / ||u||,u.y / ||u||] = [0.76...,0.65...]*.
- **[normalization](normalization.md)**: Normalization forces a vector's magnitude to a certain amount, typically 1 -- we do this when we have a vector and simply want to just discard its magnitude because we only care about direction (e.g. when doing a dot product to get an angle between vectors we first normalize them). To normalize a vector (to length 1) simply divide all its components by the current magnitude, e.g. *normalized(u) = [u.x / ||u||,u.y / ||u||] = [0.76...,0.65...]*.
## Code Example

Loading…
Cancel
Save