raytracer fr eine sphere ist fertig, aber das gerenderte bild sieht komisch aus, als wrden zeilen verschoben werden und keine kugel ist zu erkennen. ausserdem gibt es jetzt vektor operationen wie das skalarprodukt.
This commit is contained in:
+24
@@ -0,0 +1,24 @@
|
||||
#include "structs.h"
|
||||
#include "math.h"
|
||||
vec3 vec3Add(vec3 a, vec3 b) {
|
||||
return (vec3){a.x + b.x, a.y + b.y, a.z + b.z};
|
||||
}
|
||||
vec3 vec3Subtract(vec3 a, vec3 b) {
|
||||
return (vec3){a.x - b.x, a.y - b.y, a.z - b.z};
|
||||
}
|
||||
vec3 vec3Scale(vec3 vector, double scalar) {
|
||||
return (vec3){vector.x * scalar, vector.y * scalar, vector.z * scalar};
|
||||
}
|
||||
double vec3Product(vec3 a, vec3 b) {
|
||||
return (a.x * b.x + a.y * b.y + a.z * b.z);
|
||||
}
|
||||
double vec3Length(vec3 vector) {
|
||||
return sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);
|
||||
}
|
||||
vec3 vec3Normalize(vec3 vector) {
|
||||
double length = vec3Length(vector);
|
||||
return (vec3){vector.x / length, vector.y / length, vector.z / length};
|
||||
}
|
||||
vec3 vec3Cross(vec3 a, vec3 b) {
|
||||
return (vec3){a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x};
|
||||
}
|
||||
Reference in New Issue
Block a user