コード例 #1
0
        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++;
            }
        }
コード例 #2
0
        //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);
        }
コード例 #3
0
        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++;
            }
        }
コード例 #4
0
 //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));
 }