Is this code correct?
z
z at z.com
Thu Mar 30 10:29:25 UTC 2023
Is this code correct or logically sound?
```D
import std;
enum {////side/depth/height and side/height
x,//0
y,//1
z //2
}
/**
Indicates wether a triangle faces an imaginary view point.
*/
bool triangleFacesCamera(float[3] tA, float[3] tB, float[3] tC) {
float r1, r2;
r1 = atan2(tB[x] - tA[x], tB[z] - tA[z]);//tried swapping
parameters without success
r2 = atan2(tC[x] - tB[x], tC[z] - tB[z]);//also tried with tA as
substraction 2nd operand, with same/similar results.
//trying with both is still broken, but appears to change the
breakage pattern.
r2 -= r1;
return r2 > 0;
}
```
For context, it is trying to reproduce an old algorithm that does
the same thing :
```D
//in D pseudo code
extern short sus(byte A, byte B){
r0 = sus(tB[y] - tA[y], tB[x] - tA[x]);
r1 = sus(tC[y] - tA[y], tC[x] - tA[x]);
r1 -= r0;
return r1 > 0;
}
```
`sus` is named so because it makes use of `atan` and a premade
table that *looks like* `tan(a*(a*5.09...))` but is impossible to
exactly reproduce for me.(on a graph it looks like tan but
crammed to loop only four/sixteen/sixtyfour times at τ/4,π,τ)
Trying to parse both `atan2` and `sus` with `(sin(angle),
cos(angle))` as arguments[1] shows that atan2 outputs it as an
angle in `-π~π` angle representation but `sus`'s output differs
in that it looks like `sin(x*2)`.
I'd add images to better illustrate it but do not know how...
Big thanks
[1] https://run.dlang.io/is/xR8TcE
ps: is it normal that sometimes posting has a very long delay?
when it happens it is as if the post has gone nowhere but then it
suddenly appears much later, which can cause confusion and
duplicate posting, oof.
More information about the Digitalmars-d-learn
mailing list