# ProjectPointPlane

VTKExamples/CSharp/SimpleOperations/ProjectPointPlane

### Description

This example projects a point onto a plane

### Code

ProjectPointPlane.cs

    using System;
    using System.Runtime.InteropServices;
    using System.Diagnostics;
    using Kitware.VTK;

    void ProjectPointPlane() {
       vtkPlane plane = vtkPlane.New();
       plane.SetOrigin(0.0, 0.0, 0.0);
       plane.SetNormal(0.0, 0.0, 1.0);

       double[] p = new double[] { 23.1, 54.6, 9.2 };
       double[] projected = new double[3];

       IntPtr pP = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(double)) * 3);
       IntPtr pProjected = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(double)) * 3);
       Marshal.Copy(p, 0, pP, 3);
       Marshal.Copy(projected, 0, pProjected, 3);

       // NOTE: normal assumed to have magnitude 1
       plane.ProjectPoint(pP, pProjected);
       Marshal.Copy(pProjected, projected, 0, 3);
       Marshal.FreeHGlobal(pP);
       Marshal.FreeHGlobal(pProjected);

       Console.WriteLine("Projected: "
          + projected[0] + " "
          + projected[1] + " "
          + projected[2]);
    }