Example #1
0
 public MQOVertex Cross(MQOVertex v)
 {
     return(new MQOVertex(
                Y * v.Z - Z * v.Y,
                Z * v.X - X * v.Z,
                X * v.Y - Y * v.X));
 }
Example #2
0
 public MQOVertex SubEq(MQOVertex v)
 {
     X -= v.X;
     Y -= v.Y;
     Z -= v.Z;
     return(this);
 }
Example #3
0
        internal void calcNormal(List <MQOVertex> vertex)
        {
            MQOVertex v1, v2, v3;

            switch (VertexID.Length)
            {
            case 3:
                v1     = vertex[VertexID[1]].Sub(vertex[VertexID[0]]);
                v2     = vertex[VertexID[2]].Sub(vertex[VertexID[0]]);
                normal = v2.Cross(v1).Normalize();
                break;

            case 4:
                v1     = vertex[VertexID[1]].Sub(vertex[VertexID[0]]);
                v2     = vertex[VertexID[2]].Sub(vertex[VertexID[0]]);
                v3     = vertex[VertexID[3]].Sub(vertex[VertexID[0]]);
                normal = v2.Cross(v1).Normalize();
                try
                {
                    normal.AddEq(v3.Cross(v2).Normalize());
                    normal = normal.Normalize();
                }
                catch
                {
                    normal = null;     // 法線がおかしな向きになる時はnullとする
                }
                break;

            default:
                break;
            }
        }
Example #4
0
 public MQOVertex AddEq(MQOVertex v)
 {
     X += v.X;
     Y += v.Y;
     Z += v.Z;
     return(this);
 }
Example #5
0
 internal void calcNormal(List<MQOVertex> vertex)
 {
     MQOVertex v1, v2, v3;
     switch (VertexID.Length)
     {
         case 3:
             v1 = vertex[VertexID[1]].Sub(vertex[VertexID[0]]);
             v2 = vertex[VertexID[2]].Sub(vertex[VertexID[0]]);
             normal = v2.Cross(v1).Normalize();
             break;
         case 4:
             v1 = vertex[VertexID[1]].Sub(vertex[VertexID[0]]);
             v2 = vertex[VertexID[2]].Sub(vertex[VertexID[0]]);
             v3 = vertex[VertexID[3]].Sub(vertex[VertexID[0]]);
             normal = v2.Cross(v1).Normalize();
             try
             {
                 normal.AddEq(v3.Cross(v2).Normalize());
                 normal = normal.Normalize();
             }
             catch
             {
                 normal = null; // 法線がおかしな向きになる時はnullとする
             }
             break;
         default:
             break;
     }
 }
Example #6
0
 public Decimal Product(MQOVertex v)
 {
     return(X * v.X + Y * v.Y + Z * v.Z);
 }
Example #7
0
 public MQOVertex Sub(MQOVertex v)
 {
     return(new MQOVertex(X - v.X, Y - v.Y, Z - v.Z));
 }
Example #8
0
 // 各種ベクトル演算
 public MQOVertex Add(MQOVertex v)
 {
     return(new MQOVertex(X + v.X, Y + v.Y, Z + v.Z));
 }
Example #9
0
 public MQOVertex SubEq(MQOVertex v)
 {
     X -= v.X;
     Y -= v.Y;
     Z -= v.Z;
     return this;
 }
Example #10
0
 public MQOVertex Sub(MQOVertex v)
 {
     return new MQOVertex(X - v.X, Y - v.Y, Z - v.Z);
 }
Example #11
0
 public Decimal Product(MQOVertex v)
 {
     return X * v.X + Y * v.Y + Z * v.Z;
 }
Example #12
0
 public MQOVertex Cross(MQOVertex v)
 {
     return new MQOVertex(
         Y * v.Z - Z * v.Y,
         Z * v.X - X * v.Z,
         X * v.Y - Y * v.X);
 }
Example #13
0
 public MQOVertex AddEq(MQOVertex v)
 {
     X += v.X;
     Y += v.Y;
     Z += v.Z;
     return this;
 }
Example #14
0
 // 各種ベクトル演算
 public MQOVertex Add(MQOVertex v)
 {
     return new MQOVertex(X + v.X, Y + v.Y, Z + v.Z);
 }