public void compute_line_normal(int nstart, int n) { int p1, p2; double[] z = new double[3], delta = new double[3], norm = new double[3]; z[0] = 0.0; z[1] = 0.0; z[2] = 1.0; int m = nstart; for (int i = 0; i < n; i++) { p1 = lines[m].p1; p2 = lines[m].p2; MathExtra.sub3(pts[p2].x, pts[p1].x, delta); MathExtra.cross3(z, delta, norm); MathExtra.norm3(norm); norm[2] = 0.0; Line line = lines[m]; line.norm = new double[3]; line.norm[0] = norm[0]; line.norm[1] = norm[1]; line.norm[2] = norm[2]; lines[m] = line; m++; } }
//public double axi_line_size(int); public double tri_size(int m, out double len) { double[] delta12 = new double[3], delta13 = new double[3], delta23 = new double[3], cross = new double[3]; MathExtra.sub3(pts[tris[m].p2].x, pts[tris[m].p1].x, delta12); MathExtra.sub3(pts[tris[m].p3].x, pts[tris[m].p1].x, delta13); MathExtra.sub3(pts[tris[m].p3].x, pts[tris[m].p2].x, delta23); len = Math.Min(MathExtra.len3(delta12), MathExtra.len3(delta13)); len = Math.Min(len, MathExtra.len3(delta23)); MathExtra.cross3(delta12, delta13, cross); double area = 0.5 * MathExtra.len3(cross); return(area); }
public void compute_tri_normal(int nstart, int n) { int p1, p2, p3; double[] delta12 = new double[3], delta13 = new double[3]; int m = nstart; for (int i = 0; i < n; i++) { p1 = tris[m].p1; p2 = tris[m].p2; p3 = tris[m].p3; MathExtra.sub3(pts[p2].x, pts[p1].x, delta12); MathExtra.sub3(pts[p3].x, pts[p1].x, delta13); MathExtra.cross3(delta12, delta13, tris[m].norm); MathExtra.norm3(tris[m].norm); m++; } }
//public void quad_corner_point(int, double*, double*, double*); //public void hex_corner_point(int, double*, double*, double*); public double line_size(int m) { double[] delta = new double[3]; MathExtra.sub3(pts[lines[m].p2].x, pts[lines[m].p1].x, delta); return(MathExtra.len3(delta)); }