Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 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);
 }