示例#1
0
        public g3Line vertical(g3RowVec point)                                                     // must be moved to g2Line, only for testing, all z-Values must be 0 for testing
        {
            g3Line ret = new g3Line(this);

            ret.ePoint.x = point.x + dir.y;
            ret.ePoint.y = point.y - dir.x;
            ret.init(point, ret.ePoint);
            return(ret);
        }
示例#2
0
        public g3Line parallel(double dist)                                                        // must be moved to g2Line, only for testing, all z-Values must be 0 for testing
        {
            g3Line ret = new g3Line(this);

            ret.sPoint.y = sPoint.y + Math.Sqrt(dir.x * dir.x + dir.y * dir.y) * dist / dir.x;
            ret.ePoint.x = ret.sPoint.x + dir.x;
            ret.ePoint.y = ret.sPoint.y + dir.y;
            ret.ePoint.z = ret.sPoint.z + dir.z;
            ret.pnt.x    = ret.sPoint.x;
            ret.pnt.y    = ret.sPoint.y;
            ret.pnt.z    = ret.sPoint.z;
            return(ret);
        }
示例#3
0
        }                                                                                          // must be moved to g2Line, only for testing, all z-Values must be 0 for testing

        private static void selfTest()
        {
            selfTested = true;
            g3Line g = new g3Line(new g3RowVec(0, 0, 0), new g3RowVec(1, 1, 0));

            ass(g.At((Math.Sqrt(2))).x == 1);
            ass(g.At((Math.Sqrt(2))).y == 1);

            g3Line   h = new g3Line(new g3RowVec(0, 2, 0), new g3RowVec(2, 0, 0));
            g3ColVec s = h.InterSect(g);

            ass(s[1, 1, 1] == 1);
            ass(s[1, 2, 1] == 1);
            ass(s[1, 3, 1] == 0);
            ass(h.yAt(2) == 0);
            ass(h.xAt(1) == 1);
            ass(h.parallel(Math.Sqrt(2) / 2).yAt(3) == 0);
        }
示例#4
0
 public g3Line(g3Line cloneFrom)
 {
     init(new g3RowVec(cloneFrom.sPoint), new g3RowVec(cloneFrom.ePoint));
 }
示例#5
0
 public g3ColVec InterSect(g3Line second)
 {
     return(second.At((dir[1, 2, 1] * pnt[1, 1, 1] - dir[1, 1, 1] * pnt[1, 2, 1] + dir[1, 1, 1] * second.pnt[1, 2, 1] - dir[1, 2, 1] * second.pnt[1, 1, 1]) / (dir[1, 2, 1] * second.dir[1, 1, 1] - dir[1, 1, 1] * second.dir[1, 2, 1])));
 }