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