private MasterGeoObj[] checkSphereSphere(AbstractSphere abstractSphere1, AbstractSphere abstractSphere2) { intersectionFigData data = IntersectionMath.SphereSphereIntersection(abstractSphere1, abstractSphere2); Debug.Log("Data produces " + data.figtype.ToString()); Debug.Log("Point Value " + data.vectordata[0].ToString()); MasterGeoObj[] mgoResult = null; if (data.figtype == GeoObjType.circle) { DependentPoint centerPoint = GeoObjConstruction.dPoint(data.vectordata[0]); Vector3 radiusDirection = Vector3.up; if (Vector3.Cross(radiusDirection, data.vectordata[1]).magnitude == 0) { radiusDirection = Vector3.right; } radiusDirection = Vector3.Cross(data.vectordata[1], radiusDirection).normalized; DependentPoint edgePoint = GeoObjConstruction.dPoint(data.vectordata[2]); DependentCircle newCircle = GeoObjConstruction.dCircle(centerPoint, edgePoint, data.vectordata[1]); mgoResult = new MasterGeoObj[] { centerPoint.setIntersectionFigure(0), edgePoint.setIntersectionFigure(0), newCircle.setIntersectionFigure(0) }; } else if (data.figtype == GeoObjType.point) { mgoResult = new MasterGeoObj[] { GeoObjConstruction.dPoint(data.vectordata[0]) }; } return(mgoResult); }
private MasterGeoObj[] checkSphereFlatface(AbstractSphere abstractSphere, flatfaceBehave flatfaceBehave) { intersectionFigData data = IntersectionMath.SpherePlaneIntersection(abstractSphere, flatfaceBehave); MasterGeoObj[] mgoResult = null; if (data.figtype == GeoObjType.circle) { DependentPoint centerPoint = GeoObjConstruction.dPoint(data.vectordata[0]); Vector3 radiusDirection = Vector3.up; if (Vector3.Cross(radiusDirection, data.vectordata[1]).magnitude == 0) { radiusDirection = Vector3.right; } radiusDirection = Vector3.Cross(data.vectordata[1], radiusDirection).normalized; DependentPoint edgePoint = GeoObjConstruction.dPoint(data.vectordata[0] + data.floatdata[0] * radiusDirection); DependentCircle newCircle = GeoObjConstruction.dCircle(centerPoint, edgePoint, data.vectordata[1]); mgoResult = new MasterGeoObj[] { centerPoint.setIntersectionFigure(0), edgePoint.setIntersectionFigure(1), newCircle.setIntersectionFigure(2) }; } else if (data.figtype == GeoObjType.point) { mgoResult = new MasterGeoObj[] { GeoObjConstruction.dPoint(data.vectordata[0]) }; } return(mgoResult); }