# finding tangents of geomsurface

hi,
is there a built-in way to find tangents(tangent planes) or normals those help us to find tangents of the geom_surface class or tangents of any object that is used to declare surfaces?
thanks "An original surface normal is defined by cross-product of U and V derivatives, and can be confirmed or reversed by that boolean flag."

u and v in geom_surface is real numbers,
how can i get their derivatives?

as i remember from calculus 2, u and v should be functions for lines, am i wrong, but they are represented as reals in geom_surface?

as you can see i am a bit confused could you advise something?
thanks if i recall correct GeomLProps can return you the direction of the principle vectors, and the normal of the surface.
from there its easy to move to a Frenet frame Have a look at
Geom_Surface::D1 (const Standard_Real U, const Standard_Real V, gp_Pnt &P, gp_Vec &D1U, gp_Vec &D1V)

This calculates the first derivatives for a Geom_Surface object i was planning to ask if for example d1u means "derivative"?

the D1 function you wrote gets parameters

gp_Vec &D1U

and

gp_Vec &D1V

does these mean derivatives of u and v?

if so, "are u and v functions which can be derivated?"

if so how can u and v handle, with which data type?

arent u and v scaler functions, how can their derivative be vectors?

i must know calculus exactly for doing such work,
but i have a little calculus, hope you share your ideas. or is there something to read to learn which member field means what, which function does what? i think my real problem is that not to be able to reach codes.
i searched for the occ installation directories, but there is no geom_surface.cpp,
but only hxx, thus, where is the functions in the .hxx declared?
why are those hidden :( did you check out the doxygen docs? the API docs are fairly ok. are you aware that the 1st derivatives are the tangents of the surface at that point? did you read up on ? this really isn't that hard yet ;)
however, you would get _far_ better feedback from this forum if you'd take the time to explain what your objective is Merve! thanks jelle for detailed replies.
my objective has changed.
i must convert
a geom_surface to a set of points.

i found

gp_Pnt value(Standard real U, Standard_Real V)

method of Geom_Surface.

I know i must iterate in for loops but i have no idea to give which numbers to U and V,
and where to find max and mins of U and V and i dont know if i choose amoun of increment at each iteration. i ve found

BRepTools::UVBounds ( Face, UMin, UMax, VMin, VMax )

going to research it.
thanks. >>>I know i must iterate in for loops but i have no idea to give which numbers to U and V,
>>>and where to find max and mins of U and V and i dont know if i choose amoun of increment at each iteration.

this is to your own liking / intuition Merve, you can subsample a surface up to an infinite resolution... sorry, there is a mistake by me.
not a surface, a part of a surface, maybe a TopoDS_Face. that's just semantics; a Face is topology speak for a surface.
the shape itself is one and the same... i think Face is representing a restricted area, a restricted part of surface, isnt it?

and cant i do something like this:

for(double u=umin;u absolutely thanks very much jelle