mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-02 20:58:15 +00:00
Merge branch 'master' of https://github.com/odin-lang/Odin
This commit is contained in:
@@ -429,11 +429,11 @@ reflect :: proc(I, N: $T) -> (out: T) where IS_ARRAY(T), IS_FLOAT(ELEM_TYPE(T))
|
|||||||
b := N * (2 * dot(N, I))
|
b := N * (2 * dot(N, I))
|
||||||
return I - b
|
return I - b
|
||||||
}
|
}
|
||||||
refract :: proc(I, N: $T) -> (out: T) where IS_ARRAY(T), IS_FLOAT(ELEM_TYPE(T)) {
|
refract :: proc(I, Normal: $V/[$N]$E, eta: E) -> (out: V) where IS_ARRAY(V), IS_FLOAT(ELEM_TYPE(V)) {
|
||||||
dv := dot(N, I)
|
dv := dot(Normal, I)
|
||||||
k := 1 - eta*eta - (1 - dv*dv)
|
k := 1 - eta*eta * (1 - dv*dv)
|
||||||
a := I * eta
|
a := I * eta
|
||||||
b := N * eta*dv*math.sqrt(k)
|
b := Normal * (eta*dv+math.sqrt(k))
|
||||||
return (a - b) * E(int(k >= 0))
|
return (a - b) * E(int(k >= 0))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user