1#ifndef CODEX_ARITHMETIC_FOLDING_ROTATE_HPP
2#define CODEX_ARITHMETIC_FOLDING_ROTATE_HPP
29 {
return v0.
x * v1.
x + v0.
y * v1.
y + v0.
z * v1.
z; }
31inline vec3
cross(
const vec3 &v0,
const vec3 &v1) {
33 v0.
y * v1.z - v0.z * v1.y,
34 v0.z * v1.x - v0.x * v1.z,
35 v0.x * v1.y - v0.y * v1.x};
40inline vec2
rotate(
const vec2 &v,
float sin,
float cos)
41 {
return {
v.
x * cos -
v.
y * sin,
v.
x * sin +
v.
y * cos}; }
44 {
return {v0.
x *
s, v0.y *
s, v0.z *
s}; }
45inline vec3
operator*(
float s,
const vec3 &v0) {
return v0 *
s; }
46inline vec3
operator+(
const vec3 &v0,
const vec3 &v1)
47 {
return {v0.
x + v1.x, v0.y + v1.y, v0.z + v1.z}; }
48inline vec3
operator-(
const vec3 &v0,
const vec3 &v1)
49 {
return {v0.
x - v1.x, v0.y - v1.y, v0.z - v1.z}; }
51inline vec3
rotate(
const vec3 &v,
float sin,
float cos,
const vec3 &
n) {
53 const auto d =
v - proj;
58inline vec3
rotate_y(
const vec3 &v,
float sin,
float cos) {
60 return {ret.
y,
v.
y, ret.x};
#define f(x)
Definition 5.c:2
constexpr codex::vec3 v
Definition rotate_test.cpp:12
float dot(const vec3 &v0, const vec3 &v1)
Definition rotate.hpp:28
vec3 cross(const vec3 &v0, const vec3 &v1)
Definition rotate.hpp:31
vec3 rotate_y(const vec3 &v, float sin, float cos)
Rotates v around the y axis.
Definition rotate.hpp:58
vec3 operator+(const vec3 &v0, const vec3 &v1)
Definition rotate.hpp:46
void rotate(I b, I n, S e)
Definition rotate.hpp:22
vec3 operator*(const vec3 &v, float s)
Definition rotate.hpp:43
vec3 operator-(const vec3 &v0, const vec3 &v1)
Definition rotate.hpp:48
#define g(a)
Definition std1.c:2
float x
Definition rotate.hpp:8
float y
Definition rotate.hpp:8
float y
Definition rotate.hpp:9
float x
Definition rotate.hpp:9
float z
Definition rotate.hpp:9
constexpr fixed_string s
Definition test.cpp:6