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)); }
public MQOVertex SubEq(MQOVertex v) { X -= v.X; Y -= v.Y; Z -= v.Z; return(this); }
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; } }
public MQOVertex AddEq(MQOVertex v) { X += v.X; Y += v.Y; Z += v.Z; return(this); }
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; } }
public Decimal Product(MQOVertex v) { return(X * v.X + Y * v.Y + Z * v.Z); }
public MQOVertex Sub(MQOVertex v) { return(new MQOVertex(X - v.X, Y - v.Y, Z - v.Z)); }
// 各種ベクトル演算 public MQOVertex Add(MQOVertex v) { return(new MQOVertex(X + v.X, Y + v.Y, Z + v.Z)); }
public MQOVertex SubEq(MQOVertex v) { X -= v.X; Y -= v.Y; Z -= v.Z; return this; }
public MQOVertex Sub(MQOVertex v) { return new MQOVertex(X - v.X, Y - v.Y, Z - v.Z); }
public Decimal Product(MQOVertex v) { return X * v.X + Y * v.Y + Z * v.Z; }
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); }
public MQOVertex AddEq(MQOVertex v) { X += v.X; Y += v.Y; Z += v.Z; return this; }
// 各種ベクトル演算 public MQOVertex Add(MQOVertex v) { return new MQOVertex(X + v.X, Y + v.Y, Z + v.Z); }