public TR2Marshaller(PLFLT[,] xg, PLFLT[,] yg) { if (xg.GetLength(0) != yg.GetLength(0) || xg.GetLength(1) != yg.GetLength(1)) { throw new ArgumentException("argument matrices must have same dimensions"); } mXg = new MatrixMarshaller(xg); mYg = new MatrixMarshaller(yg); _CGrid2 g; g.Xg = mXg.Ptr; g.Yg = mYg.Ptr; g.Zg = IntPtr.Zero; g.NX = mXg.NX; g.NY = mXg.NY; gcG = GCHandle.Alloc(g, GCHandleType.Pinned); pltr_data = gcG.AddrOfPinnedObject(); }
public TR1Marshaller(PLFLT[] xg, PLFLT[] yg) { if (xg.Length != yg.Length) { throw new ArgumentException("argument arrays must have same dimensions"); } gcXg = GCHandle.Alloc(xg, GCHandleType.Pinned); gcYg = GCHandle.Alloc(yg, GCHandleType.Pinned); _CGrid g; g.Xg = gcXg.AddrOfPinnedObject(); g.Yg = gcYg.AddrOfPinnedObject(); g.Zg = IntPtr.Zero; g.NX = xg.Length; g.NY = yg.Length; g.NZ = 0; gcG = GCHandle.Alloc(g, GCHandleType.Pinned); pltr_data = gcG.AddrOfPinnedObject(); }
private void _Func(PLFLT x, PLFLT y, out PLFLT tx, out PLFLT ty, PLPointer unused) { Native._tr2(x, y, out tx, out ty, pltr_data); }