private void TestCompoundBodyContainsPoint(CompoundBody compoundBody, double radius) { foreach (var part in compoundBody.Parts) { Assert.IsTrue(compoundBody.ContainsPoint(part.Position)); Assert.IsFalse(compoundBody.ContainsPoint(part.Position.CreatePoint(dx: radius))); Assert.IsFalse(compoundBody.ContainsPoint(part.Position.CreatePoint(dy: radius))); Assert.IsFalse(compoundBody.ContainsPoint(part.Position.CreatePoint(dz: radius))); } }
public void CompoundBody_Of_TwoCuboids_BoundingBox_Correct(double x0, double y0, double z0, double x1, double y1, double z1, double expectedSizeX, double expectedSizeY, double expectedSizeZ) { var compoundBody = new CompoundBody(new[] { new RectangularCuboid(new Vector3(x0, y0, z0), 4, 4, 4), new RectangularCuboid(new Vector3(x1, y1, z1), 4, 4, 4), }); var boundingBox = compoundBody.GetBoundingBox(); Assert.AreEqual(expectedSizeX, boundingBox.SizeX, "SizeX"); Assert.AreEqual(expectedSizeY, boundingBox.SizeY, "SizeY"); Assert.AreEqual(expectedSizeZ, boundingBox.SizeZ, "SizeZ"); }
private static void AssertCompoundBodyWithSinglePart_Contains_IsEquivalentToItsPartContains(Body part) { var random = new Random(123123); var compound = new CompoundBody(new List <Body> { part }); var compound2 = new CompoundBody(new List <Body> { compound }); for (int i = 0; i < 1000; i++) { var p = new Vector3( random.NextDouble() * 20 - 10, random.NextDouble() * 20 - 10, random.NextDouble() * 20 - 10); Assert.AreEqual(part.ContainsPoint(p), compound.ContainsPoint(p)); Assert.AreEqual(part.ContainsPoint(p), compound2.ContainsPoint(p)); } }