# Evalutate Surface With Code's surface normal is not the "same" direction with Grasshopper's "Evalutate Surface" Component

(Cughudson) #1

The Evalutate surface with C# Code, And the normal of the surface is not the “same” with When I using Grasshopper “Evalutate Surface”， The C# Code is below:

``````double U = Surface.Domain(0).Mid;
double V = Surface.Domain(1).Mid;
Vector3d Vec = Surface.NormalAt(U, V);
Point3d _Pt = Surface.PointAt(U, V);
Vector = Vec;
Point = _Pt;
``````

The picture show evalutate surface with component:

The picture show evalutate surface with compnent and Code and the green vector is the result evaluate surface with Component, red is the result evalutate with C# code;

Is anyone can help me? Thanks

#2

Check your c# surface domain, it’s sim that your uvs are not split in u or v ,in your gh definition the normal is computed from a closest point not a domain division like in your c# def so the difference is normal

(barycentre computation from boundary are sometimes different than surface domain *.5)

(Cughudson) #3

How Can I knew wether the uvs are not split in u or v? and I think for the surface the two method will get the same direction for the surface normal, However is not

(Dale Fugier) #4

Hi @cughudson,

Since your input is a `Brep`, you sould be evaluating the `BrepFace`, not the underlying surface.

– Dale

(Cughudson) #5

@dale OK Thanks, It is helpful

(Cughudson) #6

Hi @dale, The underlying surface is so difficult to understand for me, could you show me what is underlying surface excatcly is? Thanks

(qythium) #7

Breps are made of multiple trimmed or untrimmed surfaces called `BrepFace`s, each of which have their own independent u-v domains.

Area centroid is generally not the same thing as the middle of the surface domain - To obtain the same result as the GH definition you will have to use the AreaMassProperties class: http://developer.rhino3d.com/api/RhinoCommon/html/T_Rhino_Geometry_AreaMassProperties.htm

and this very cumbersome overload of `Brep.ClosestPoint()`:
http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Brep_ClosestPoint_1.htm

(Dale Fugier) #8

Hi @cughudson,