GetCentroid
Syntax
public const string enginedll = @"engine.dll"; [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref float vertexBuffer, ref Int32 indexBuffer, out double centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref float vertexBuffer, ref Int32 indexBuffer, double[] centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref float vertexBuffer, ref Int64 indexBuffer, out double centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref float vertexBuffer, ref Int64 indexBuffer, double[] centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref double vertexBuffer, ref Int32 indexBuffer, out double centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref double vertexBuffer, ref Int32 indexBuffer, double[] centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref double vertexBuffer, ref Int64 indexBuffer, out double centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, ref double vertexBuffer, ref Int64 indexBuffer, double[] centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, IntPtr vertexBuffer, IntPtr indexBuffer, out double centroid); [DllImport(enginedll, EntryPoint = "GetCentroid")] public static extern double GetCentroid(Int64 owlInstance, IntPtr vertexBuffer, IntPtr indexBuffer, double[] centroid);
Property owlInstance
Size: 64 bit / 8 byte (value)Property vertexBuffer
Size: 32 bit / 4 byte (reference)Property indexBuffer
Size: 32 bit / 4 byte (reference)Property centroid
Size: 32 bit / 4 byte (reference)
Example (based on pure API calls)
Here you can find code snippits that show how the API call GetCentroid can be used.
using RDF; // include at least engine.cs within your solution ... static void Main(string[] args) { Int64 model = RDF.engine.CreateModel(); if (model != 0) { // // Classes // Int64 classBox = RDF.engine.GetClassByName(model, "Box"); // // Datatype Properties (attributes) // Int64 propertyLength = RDF.engine.GetPropertyByName(model, "length"), propertyWidth = RDF.engine.GetPropertyByName(model, "width"), propertyHeight = RDF.engine.GetPropertyByName(model, "height"); // // Instances (creating) // Int64 instanceBox = RDF.engine.CreateInstance(classBox, (string) null); double length = 2.8, width = 1.3, height = 1.4; RDF.engine.SetDatatypeProperty(instanceBox, propertyLength, ref length, 1); RDF.engine.SetDatatypeProperty(instanceBox, propertyWidth, ref width, 1); RDF.engine.SetDatatypeProperty(instanceBox, propertyHeight, ref height, 1); // // Simple use of the derived information functions // double[] centroid = new double[3]; double volume = RDF.engine.GetCentroid(instanceBox, (IntPtr) 0, (IntPtr) 0, out centroid[0]); Int64 vertexBufferSize = 0, indexBufferSize = 0; RDF.engine.CalculateInstance(instanceBox, out vertexBufferSize, out indexBufferSize, (IntPtr) 0); if (vertexBufferSize != 0 && indexBufferSize != 0) { float[] vertexBuffer = new float[6 * vertexBufferSize]; RDF.engine.UpdateInstanceVertexBuffer(instanceBox, ref vertexBuffer[0]); Int32[] indexBuffer = new Int32[indexBufferSize]; RDF.engine.UpdateInstanceIndexBuffer(instanceBox, ref indexBuffer[0]); // // Reuse knowledge to improve performance (in case of single precision, with less accuracy) // volume = RDF.engine.GetCentroid(instanceBox, ref vertexBuffer[0], ref indexBuffer[0], out centroid[0]); } // // The resulting model can be viewed in 3D-Editor.exe // RDF.engine.SaveModel(model, "c:\\created\\myFile.bin"); RDF.engine.CloseModel(model); } }