public virtual void MirrorTransform(ConvexData.MIRROR_TYPE mirror) { float tmp; switch (mirror) { case ConvexData.MIRROR_TYPE.MIRROR_AXIS_X: { mNormal.x = -mNormal.x; } break; case ConvexData.MIRROR_TYPE.MIRROR_AXIS_Y: { mNormal.y = -mNormal.y; } break; case ConvexData.MIRROR_TYPE.MIRROR_AXIS_Z: { mNormal.z = -mNormal.z; } break; case ConvexData.MIRROR_TYPE.MIRROR_AXIS_XY: { tmp = mNormal.x; mNormal.x = mNormal.y; mNormal.y = tmp; } break; case ConvexData.MIRROR_TYPE.MIRROR_AXIS_YZ: { tmp = mNormal.y; mNormal.y = mNormal.z; mNormal.z = tmp; } break; case ConvexData.MIRROR_TYPE.MIRROR_AXIS_XZ: { tmp = mNormal.x; mNormal.x = mNormal.z; mNormal.z = tmp; } break; default: break; } }
// 镜像变换,镜像轴参见CConvexHullData::MIRROR_TYPE public override void MirrorTransform(ConvexData.MIRROR_TYPE mirror) { base.MirrorTransform(mirror); int nAllVTX = mLstVIDs.Count; int nHalfVTX = nAllVTX / 2; for (int i = 0; i < nHalfVTX; ++i) { int tmp = mLstVIDs[i]; mLstVIDs[i] = mLstVIDs[nAllVTX - 1 - i]; mLstVIDs[nAllVTX - 1 - i] = tmp; } }