Thanks very much, Bruce.
That saves me a ton of effort.

Let me confirm a few key details.
The command with -n kicks out a file with 2 header lines, a list of normals, 
and a list of triangles for which each is defined by its 3 vertex numbers.
I see the format for a "Triangle Surface File - ASCII version" on Graham 
Wideman's web pages created many moons ago:
http://www.grahamwideman.com/gw/brain/fs/surfacefileformats.htm#TriangleASCII

Can you point me to more up-to-date and detailed info, perhaps on the wiki?
(1) Are the normals in TkRAS coordinates?  I can check this pretty easily.  
Please pardon my laziness in asking.
(2) The list of normals I presume are in order beginning at vertex number 
zero??  I would like to make sure I identify the correct vertex number for each 
normal.  How?
(3) Are the normals consistently pointing one way, e.g. ctx --> wm?
(4) Is the order of the vertex numbers for each triangle consistent to provide 
reliable ctx --> wm directionality.  If so is it (v1-v2)X(v2-v3) or vica versa? 
  

Best regards,
 
Don

> -----Original Message-----
> From: freesurfer-boun...@nmr.mgh.harvard.edu [mailto:freesurfer-
> boun...@nmr.mgh.harvard.edu] On Behalf Of Bruce Fischl
> Sent: Tuesday, October 13, 2015 8:45 AM
> To: Freesurfer support list
> Subject: Re: [Freesurfer] list of normals to triangle vertices
> 
> Hi Don
> 
> mris_convert -n lh.white lh.white.normals.asc
> 
> should do the trick. And this is the way that the area is computed (from
> mrisurf.c):
> 
> static float
> mrisTriangleArea(MRIS *mris, int fac, int n) {
>    int n0,n1;
>    face_type *f;
>    float v0[3],v1[3],d1,d2,d3;
> 
>    n0 = (n == 0)                   ? VERTICES_PER_FACE-1 : n-1;
>    n1 = (n == VERTICES_PER_FACE-1) ? 0                   : n+1;
>    f = &mris->faces[fac];
>    v0[0] = mris->vertices[f->v[n]].x - mris->vertices[f->v[n0]].x;
>    v0[1] = mris->vertices[f->v[n]].y - mris->vertices[f->v[n0]].y;
>    v0[2] = mris->vertices[f->v[n]].z - mris->vertices[f->v[n0]].z;
>    v1[0] = mris->vertices[f->v[n1]].x - mris->vertices[f->v[n]].x;
>    v1[1] = mris->vertices[f->v[n1]].y - mris->vertices[f->v[n]].y;
>    v1[2] = mris->vertices[f->v[n1]].z - mris->vertices[f->v[n]].z;
>    d1 = -v1[1]*v0[2] + v0[1]*v1[2];
>    d2 = v1[0]*v0[2] - v0[0]*v1[2];
>    d3 = -v1[0]*v0[1] + v0[0]*v1[1];
>    return sqrt(d1*d1+d2*d2+d3*d3)/2;
> }
> 
> 
> 
> cheers
> Bruce
> 
> 
> On Tue, 13 Oct 2015, Krieger, Donald N. wrote:
> 
> >
> > Hi everyone,
> >
> >
> >
> > I need to create the vector normal to the surface at each “white” vertex.
> >
> > I would like to end up with 7 fields in each entry:
> >
> > 1         Vertex number
> >
> > 2-4  RAS coordinates
> >
> > 5-7 RAS components of the normal vector pointed from ctx à wm
> >
> >
> >
> > mri_annotation2label gets me the first 4.
> >
> > I just don’t want to reinvent the wheel getting the normal.
> >
> > If there’s a way to get freesurfer to kick out the normals, that would
> > be best.
> >
> > Here are naïve questions that arise out of this problem:
> >
> > 1.       Is there a simple way to identify which vertices are “nearest
> > neighbors” other than measuring and sorting the distances between each
> > and all the others i.e. which ones form a triangle?  I understand to
> > use the normalized average of the 6 triangles which include the vertex.
> >
> > 2.       Is there a simple way to identify the order of the sides of
> > each triangle so that their cross product is ordered correctly to
> > produce ctx à wm?
> >
> >
> >
> > Thanks for your help with this.
> >
> >
> >
> > Don
> >
> >
> >
> >
> >

_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Reply via email to