public MaterialPlusClippingPlusColorProviderKey(IMaterial material, PlaneD3D[] clipPlanes, Gdi.Plot.IColorProvider colorProvider) : base(material, clipPlanes) { if (null == colorProvider) throw new ArgumentNullException(nameof(colorProvider)); this.ColorProvider = colorProvider; }
public MaterialPlusClippingPlusColorProviderKey(IMaterial material, PlaneD3D[] clipPlanes, Gdi.Plot.IColorProvider colorProvider) : base(material, clipPlanes) { if (null == colorProvider) { throw new ArgumentNullException(nameof(colorProvider)); } ColorProvider = colorProvider; }
public float[] GetColorArrayForColorProvider(Gdi.Plot.IColorProvider colorProvider) { int numberOfColors = 1024; var result = new float[4 * numberOfColors]; for (int i = 0, offs = 0; i < numberOfColors; ++i, offs += 4) { double tu = i / (double)numberOfColors; double u = (tu - UOfColorBelow) / UOfColorRegular; var c = colorProvider.GetAxoColor(u); result[offs + 0] = c.ScR; result[offs + 1] = c.ScG; result[offs + 2] = c.ScB; result[offs + 3] = c.ScA; } return(result); }
public override IPositionNormalUIndexedTriangleBuffer GetPositionNormalUIndexedTriangleBuffer(IMaterial material, PlaneD3D[] clipPlanes, Gdi.Plot.IColorProvider colorProvider) { // Transform the clip planes to our coordinate system var clipPlanesTransformed = clipPlanes.Select(plane => _transformation.Transform(plane)).ToArray(); var key = new MaterialPlusClippingPlusColorProviderKey(material, clipPlanesTransformed, colorProvider); if (!_positionNormalUIndexedTriangleBuffers.TryGetValue(key, out var result)) { result = new PositionNormalUIndexedTriangleBuffer(this); _positionNormalUIndexedTriangleBuffers.Add(key, result); } return(result); }