I was scripting raycasts and everything was fine until I started printing the normals of the raycasts. When getting a normal of a flat part from the top the normal should be
0,1,0, but instead it is printing things like
0,1,4.3711388286738e-08 out as the normal. When I get the top normal of the baseplate everything is fine so I don’t know what is causing the error.
4.3711388286738 * 10^-8, which is extremely close to
0.0000000437). The reason why it’s not exactly
0 is because of some small inaccuracy in calculating the normal.
Also why is the normal of a 45 degree rotated part not 0.5? It was something close to 0.7.
The value close to 0.7 is the sine of a 45 degree angle (or cosine, because sine and cosine are the same for 45 degrees).
The length of the normal vector is always 1 (possibly not exactly because of some inaccuracy, but almost). And the length of a 3d vector is
sqrt(x^2+y^2+z^2). For example, if the part was rotated
45 degrees around the x axis, its top normal would be
(0, sin(45), sin(45)).
1. A vector with values
(0, 0.5, 0.5) would have the same direction, but its length would be
How do I know when to use sin vs cos?
Perhaps this picture I found from google helps explain it. θ is the angle. Adjacent and opposite are the lengths of the sides that have a ninety degree angle between them. Adjacent refers to the side that forms θ with the longest side, which is called hypotenuse.
Edit: I apparently added the image incorrectly, so it didn’t show up.
Edit: Now I got it to appear.