Ytruder issues
2017-04-08, 10:11 (This post was last modified: 2017-04-08, 10:26 by Nils Schmidt.)
2017-04-08, 10:11 (This post was last modified: 2017-04-08, 10:26 by Nils Schmidt.)
(2017-04-06, 17:02)Philippe Hurbain Wrote: - I don't think that deleting the lines that were extruded is a good idea, generally the extruded surface has an edge...
- It seems impossible to use symmetry or projection with value=0 while both are meaningful (opposite to translation!)
I fixed these issues (#531 and #532).
(2017-04-06, 17:02)Philippe Hurbain Wrote: - Not utterly annoying, but I don't understand why triangles are sometimes generated for translation mode. This should only produce quads?
I don't understand it either. The criteria to split a quad into two triangles is this:
Code:
Tri_Angle(Surf[k][0], Surf[k][1], Surf[k][2], Surf[k][0], Surf[k][2], Surf[k][3]) > 0.5
The "Tri_Angle" function seems to be correct:
Code:
// Tri_Angle computes the cosine of the angle between the planes of two triangles.
// They are assumed to be non-degenerated
private double Tri_Angle(double[] U0, double[] U1, double[] U2, double[] V0, double[] V1, double[] V2)
{
double[] Unorm = new double[3], Vnorm = new double[3];
double[] Temp = new double[3];
double[] U10 = new double[3], U20 = new double[3];
double[] V10 = new double[3], V20 = new double[3];
double len;
SUB(U10, U1, U0);
SUB(U20, U2, U0);
SUB(V10, V1, V0);
SUB(V20, V2, V0);
CROSS(Temp, U10, U20);
len = DIST(Temp, nullv);
MULT(Unorm, Temp, 1/len);
CROSS(Temp, V10, V20);
len = DIST(Temp, nullv);
MULT(Vnorm, Temp, 1/len);
return (180 / 3.14159 * Math.acos(DOT(Unorm, Vnorm)));
}