Interface ISurface
The ISurface interface must be implemented by all 3-dimensional unbound surfaces that are used by the Face object. The surface has a well defined 2-dimensional coordinate system, usually referred to as the u/v system.
Namespace: CADability.GeoObject
Assembly: CADability.dll
Syntax
public interface ISurface
Properties
| Improve this Doc View SourceIsRuled
returns wheather the surface is linear in u or v direction
Declaration
RuledSurfaceMode IsRuled { get; }
Property Value
| Type | Description |
|---|---|
| RuledSurfaceMode |
IsUPeriodic
Returns true, if this surface is periodic in the u direction (e.g. a cylinder) false otherwise.
Declaration
bool IsUPeriodic { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
IsVPeriodic
Returns true, if this surface is periodic in the v direction (e.g. a torus) false otherwise.
Declaration
bool IsVPeriodic { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
Oriented
Returns true, if this surface divides the space into two parts. If the surfaces is Oriented Orientation(GeoPoint) returns a valid result
Declaration
bool Oriented { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
UPeriod
Returns the u priod of this surface if it is IsUPeriodic 0.0 otherwise
Declaration
double UPeriod { get; }
Property Value
| Type | Description |
|---|---|
| System.Double |
UvChangesWithModification
Declaration
bool UvChangesWithModification { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
VPeriod
Returns the v priod of this surface if it is IsVPeriodic 0.0 otherwise
Declaration
double VPeriod { get; }
Property Value
| Type | Description |
|---|---|
| System.Double |
Methods
| Improve this Doc View SourceApproximate(Double, Double, Double, Double, Double)
Create a NurbSurface as an approximation of this surface
Declaration
NurbsSurface Approximate(double umin, double umax, double vmin, double vmax, double precision)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | umin | |
| System.Double | umax | |
| System.Double | vmin | |
| System.Double | vmax | |
| System.Double | precision |
Returns
| Type | Description |
|---|---|
| NurbsSurface |
Clone()
Returns an identical but independant copy of this surface
Declaration
ISurface Clone()
Returns
| Type | Description |
|---|---|
| ISurface |
CopyData(ISurface)
Copies the data of the given surface to this surface. The two surfaces are guaranteed to be of the same type. (Used after Clone() and Modify(ModOp) to restore the original values).
Declaration
void CopyData(ISurface CopyFrom)
Parameters
| Type | Name | Description |
|---|---|---|
| ISurface | CopyFrom | where to copy the data from |
Derivation2At(GeoPoint2D, out GeoPoint, out GeoVector, out GeoVector, out GeoVector, out GeoVector, out GeoVector)
Returns the point, the two first derivations and the three second derivations of the surface at the provided parameter position.
Declaration
void Derivation2At(GeoPoint2D uv, out GeoPoint location, out GeoVector du, out GeoVector dv, out GeoVector duu, out GeoVector dvv, out GeoVector duv)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | uv | Point in the parameter space |
| GeoPoint | location | Resulting 3D point |
| GeoVector | du | Resulting derivation in u |
| GeoVector | dv | Resulting derivation in v |
| GeoVector | duu | |
| GeoVector | dvv | |
| GeoVector | duv |
DerivationAt(GeoPoint2D, out GeoPoint, out GeoVector, out GeoVector)
Returns the point and the two derivations of the suface in a single call. It returns the same result as calling PointAt(GeoPoint2D), VDirection(GeoPoint2D) und VDirection(GeoPoint2D) succesively but is often faster than the three seperate calls.
Declaration
void DerivationAt(GeoPoint2D uv, out GeoPoint location, out GeoVector du, out GeoVector dv)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | uv | Point in the parameter space |
| GeoPoint | location | Resulting 3D point |
| GeoVector | du | Resulting derivation in u |
| GeoVector | dv | Resulting derivation in v |
FixedU(Double, Double, Double)
Returns a curve where the u parameter of this surface is fixed and the v parameter starts a vmin and ends at vmax
Declaration
ICurve FixedU(double u, double vmin, double vmax)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | u | |
| System.Double | vmin | |
| System.Double | vmax |
Returns
| Type | Description |
|---|---|
| ICurve |
FixedV(Double, Double, Double)
Returns a curve where the v parameter of this surface is fixed and the u parameter starts a umin and ends at umax
Declaration
ICurve FixedV(double v, double umin, double umax)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | v | |
| System.Double | umin | |
| System.Double | umax |
Returns
| Type | Description |
|---|---|
| ICurve |
GetCanonicalForm(Double, Nullable<BoundingRect>)
Returns a simpler form of this surface: SurfaceOfLinearExtrusion might be a cylinder, NURBS might be a sphere etc. Returns null, if there is no simpler form
Declaration
ISurface GetCanonicalForm(double precision, BoundingRect? bounds = default(BoundingRect? ))
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | precision | maximal allowed deviation of the new surface |
| System.Nullable<BoundingRect> | bounds |
Returns
| Type | Description |
|---|---|
| ISurface |
GetContextMenuForParametrics(IFrame, Face)
Returns a context menu to change certain parameters of the surface of a face
Declaration
MenuWithHandler[] GetContextMenuForParametrics(IFrame frame, Face face)
Parameters
| Type | Name | Description |
|---|---|---|
| IFrame | frame | |
| Face | face |
Returns
| Type | Description |
|---|---|
| MenuWithHandler[] |
GetDistance(GeoPoint)
Returns the distance of the provided point p to the (unlimited) surface.
Declaration
double GetDistance(GeoPoint p)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p |
Returns
| Type | Description |
|---|---|
| System.Double |
GetDualSurfaceCurves(BoundingRect, ISurface, BoundingRect, List<GeoPoint>, List<Tuple<Double, Double, Double, Double>>)
Returns intersectionCurves
Declaration
IDualSurfaceCurve[] GetDualSurfaceCurves(BoundingRect thisBounds, ISurface other, BoundingRect otherBounds, List<GeoPoint> seeds, List<Tuple<double, double, double, double>> extremePositions = null)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | thisBounds | |
| ISurface | other | |
| BoundingRect | otherBounds | |
| System.Collections.Generic.List<GeoPoint> | seeds | |
| System.Collections.Generic.List<System.Tuple<System.Double, System.Double, System.Double, System.Double>> | extremePositions |
Returns
| Type | Description |
|---|---|
| IDualSurfaceCurve[] |
GetExtrema()
Returns an array of points in parametric space where there are extrema in direction of x-, y- or z-axis. The normal vector in a extremum is parallel to one of the axis and the surface has a relative maximum or minimum in this direction.
Declaration
GeoPoint2D[] GetExtrema()
Returns
| Type | Description |
|---|---|
| GeoPoint2D[] | s.a. |
GetExtremePositions(BoundingRect, ICurve, out List<Tuple<Double, Double, Double>>)
Find positions on the surface and on the curve where the connection of these points are perpendicular to the surface and to the curve
Declaration
int GetExtremePositions(BoundingRect domain, ICurve curve3D, out List<Tuple<double, double, double>> positions)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | domain | valid area for the surface |
| ICurve | curve3D | the curve |
| System.Collections.Generic.List<System.Tuple<System.Double, System.Double, System.Double>> | positions | the positions found: first two doubles are u,v on the surface, third is u on the curve |
Returns
| Type | Description |
|---|---|
| System.Int32 |
GetExtremePositions(BoundingRect, ISurface, BoundingRect, out List<Tuple<Double, Double, Double, Double>>)
Find positions in the uv system, where the connection of the points are perpendicular on both surfaces. the resulting list extremePositions may be
only partially filled, the missing uv values may be double.NaN, because this is what we need in most cases.
Declaration
int GetExtremePositions(BoundingRect thisBounds, ISurface other, BoundingRect otherBounds, out List<Tuple<double, double, double, double>> extremePositions)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | thisBounds | |
| ISurface | other | |
| BoundingRect | otherBounds | |
| System.Collections.Generic.List<System.Tuple<System.Double, System.Double, System.Double, System.Double>> | extremePositions |
Returns
| Type | Description |
|---|---|
| System.Int32 |
GetLineIntersection(GeoPoint, GeoVector)
Returns the intersectionpoints of this surface with the line given by the parameters. Teh returned point are in the parametric (u/v) space of this surface.
Declaration
GeoPoint2D[] GetLineIntersection(GeoPoint startPoint, GeoVector direction)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | startPoint | startpoint of the line |
| GeoVector | direction | direction of the line |
Returns
| Type | Description |
|---|---|
| GeoPoint2D[] |
GetModified(ModOp)
Returns a clone of this surface modified by the given ModOp.
Declaration
ISurface GetModified(ModOp m)
Parameters
| Type | Name | Description |
|---|---|---|
| ModOp | m | how to modify |
Returns
| Type | Description |
|---|---|
| ISurface |
GetNaturalBounds(out Double, out Double, out Double, out Double)
Returns the natural bounds of the surface. The returned values may be infinite
Declaration
void GetNaturalBounds(out double umin, out double umax, out double vmin, out double vmax)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | umin | |
| System.Double | umax | |
| System.Double | vmin | |
| System.Double | vmax |
GetNonPeriodicSurface(ICurve[])
If this surface is periodic in u or v or both return a non-periodic surface which describes the same geometric surface but with a different parametric system. It also removes poles and is useful for non-periodic surfaces with a single pole.
Declaration
ISurface GetNonPeriodicSurface(ICurve[] orientedCurves)
Parameters
| Type | Name | Description |
|---|---|---|
| ICurve[] | orientedCurves | 3d curves, which describe the outline, that will be used. this is needed by some surfaces to determine the maximum definition area |
Returns
| Type | Description |
|---|---|
| ISurface |
GetNormal(GeoPoint2D)
Returns the normal vector (perpendicular to the surface) at the given u/v point
Declaration
GeoVector GetNormal(GeoPoint2D uv)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | uv | position of normal |
Returns
| Type | Description |
|---|---|
| GeoVector | normal vector |
GetOffsetSurface(Double)
Returns a surface that is "parallel" to this surface, i.e. each point on this surface corresponds a point on the returned surface that has the same (u,v) coordinates and has the 3d coordinates oft the point plus offset*Normal at this point
Declaration
ISurface GetOffsetSurface(double offset)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | offset | Offset to this surface |
Returns
| Type | Description |
|---|---|
| ISurface | The offset surface |
GetPatchExtent(BoundingRect, Boolean)
Returns the extent of a patch of the surface clipped rectangular in the 2d parameter space
Declaration
BoundingCube GetPatchExtent(BoundingRect uvPatch, bool rough = false)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | uvPatch | |
| System.Boolean | rough |
Returns
| Type | Description |
|---|---|
| BoundingCube |
GetPatchHull(BoundingRect, out GeoPoint, out GeoVector, out GeoVector, out GeoVector)
Returns a parallelepiped (a prism with parallelograms) defined by the parameters loc,
dir1, dir2, dir3 which completeley covers or encloses
the patch of the surface defined by the uvpatch. There are obviously many solutions
to this problem but a parallelepiped with minimum volume would be preferred. This method is used
to optimate intersection algorithms.
Declaration
void GetPatchHull(BoundingRect uvpatch, out GeoPoint loc, out GeoVector dir1, out GeoVector dir2, out GeoVector dir3)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | uvpatch | The patch of the surface in parametric space |
| GeoPoint | loc | One vertex of the result |
| GeoVector | dir1 | One of the three vectors of the parallelepiped |
| GeoVector | dir2 | One of the three vectors of the parallelepiped |
| GeoVector | dir3 | One of the three vectors of the parallelepiped |
GetPlaneIntersection(PlaneSurface, Double, Double, Double, Double, Double)
Returns the intersection curve(s) of this surface with the given plane. An empty array is returned if there is no intersection. umin, umax, vmin, vmax define the Parameterspace of this surface (not of the PlaneSurface) for the intersection. It is also the periodic domain in which the 2d curve for this surface will be returned, if this surface is periodic. the resulting curves may exceed the area provided by umin, umax, vmin, vmax.
Declaration
IDualSurfaceCurve[] GetPlaneIntersection(PlaneSurface pl, double umin, double umax, double vmin, double vmax, double precision)
Parameters
| Type | Name | Description |
|---|---|---|
| PlaneSurface | pl | plane to intersect with |
| System.Double | umin | |
| System.Double | umax | |
| System.Double | vmin | |
| System.Double | vmax | |
| System.Double | precision |
Returns
| Type | Description |
|---|---|
| IDualSurfaceCurve[] | intersection curves |
GetPolynomialParameters()
Declaration
double[] GetPolynomialParameters()
Returns
| Type | Description |
|---|---|
| System.Double[] |
GetProjectedCurve(ICurve, Double)
Returns the projection of the given curve in 2D coordinates. Should only be used for curves that are close to the surface.
Declaration
ICurve2D GetProjectedCurve(ICurve curve, double precision)
Parameters
| Type | Name | Description |
|---|---|---|
| ICurve | curve | |
| System.Double | precision |
Returns
| Type | Description |
|---|---|
| ICurve2D |
GetPropertyEntry(IFrame)
Gets the IPropertyEntry to display this surface in the property grid (may be null)
Declaration
IPropertyEntry GetPropertyEntry(IFrame frame)
Parameters
| Type | Name | Description |
|---|---|---|
| IFrame | frame |
Returns
| Type | Description |
|---|---|
| IPropertyEntry |
GetSafeParameterSteps(Double, Double, Double, Double, out Double[], out Double[])
Gets spans of the parameterspace that are guaranteed to contain only one inflection point. The returned intu should contain umin as first and umax as last value (same with v)
Declaration
void GetSafeParameterSteps(double umin, double umax, double vmin, double vmax, out double[] intu, out double[] intv)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Double | umin | |
| System.Double | umax | |
| System.Double | vmin | |
| System.Double | vmax | |
| System.Double[] | intu | |
| System.Double[] | intv |
GetSelfIntersections(BoundingRect)
Returns a List of self intersection curves in the u/v system
Declaration
ICurve2D[] GetSelfIntersections(BoundingRect bounds)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | bounds |
Returns
| Type | Description |
|---|---|
| ICurve2D[] |
GetTangentCurves(GeoVector, Double, Double, Double, Double)
Returns curves where direction is perpendicular to the normal vector
Declaration
ICurve2D[] GetTangentCurves(GeoVector direction, double umin, double umax, double vmin, double vmax)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoVector | direction | |
| System.Double | umin | |
| System.Double | umax | |
| System.Double | vmin | |
| System.Double | vmax |
Returns
| Type | Description |
|---|---|
| ICurve2D[] |
GetTouchingPoints(BoundingRect, ISurface, BoundingRect)
Returns a list of points where the surfaces touch each other (where the surfaces are tangential)
Declaration
GeoPoint[] GetTouchingPoints(BoundingRect thisBounds, ISurface other, BoundingRect otherBounds)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | thisBounds | |
| ISurface | other | |
| BoundingRect | otherBounds |
Returns
| Type | Description |
|---|---|
| GeoPoint[] |
GetUSingularities()
returns the values for the u parameter where this surface is singular i.e. changing v with this u parameter fixed doesn't change the 3D point.
Declaration
double[] GetUSingularities()
Returns
| Type | Description |
|---|---|
| System.Double[] | list of u singularities |
GetVSingularities()
returns the values for the v parameter where this surface is singular i.e. changing u with this v parameter fixed doesn't change the 3D point.
Declaration
double[] GetVSingularities()
Returns
| Type | Description |
|---|---|
| System.Double[] | list of v singularities |
GetZMinMax(Projection, Double, Double, Double, Double, ref Double, ref Double)
Gets the minimum and maximumm valus for the z-coordinate of a rectangular patch (in parametric space) of this surface under a certain projection
Declaration
void GetZMinMax(Projection p, double umin, double umax, double vmin, double vmax, ref double zMin, ref double zMax)
Parameters
| Type | Name | Description |
|---|---|---|
| Projection | p | the projection |
| System.Double | umin | left bound of the rectangular patch |
| System.Double | umax | right bound of the rectangular patch |
| System.Double | vmin | bottom bound of the rectangular patch |
| System.Double | vmax | top bound of the rectangular patch |
| System.Double | zMin | returned minimum |
| System.Double | zMax | returned maximum |
HasDiscontinuousDerivative(out ICurve2D[])
Declaration
bool HasDiscontinuousDerivative(out ICurve2D[] discontinuities)
Parameters
| Type | Name | Description |
|---|---|---|
| ICurve2D[] | discontinuities |
Returns
| Type | Description |
|---|---|
| System.Boolean |
HitTest(BoundingCube, out GeoPoint2D)
Returns true, if this surface interferes with the provided cube. If this is the case uv will contain a point (in the parameter system of the surface) which is inside the cube
Declaration
bool HitTest(BoundingCube cube, out GeoPoint2D uv)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingCube | cube | |
| GeoPoint2D | uv |
Returns
| Type | Description |
|---|---|
| System.Boolean |
HitTest(BoundingCube, Double, Double, Double, Double)
Checks whether this surface restricted by the provided parameters interferes with the provided cube.
Declaration
bool HitTest(BoundingCube cube, double umin, double umax, double vmin, double vmax)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingCube | cube | Bounding cube for the test |
| System.Double | umin | Minimum for the u parameter |
| System.Double | umax | Maximum for the u parameter |
| System.Double | vmin | Minimum for the v parameter |
| System.Double | vmax | Maximum for the v parameter |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if the cube and the surface interfere |
Intersect(BoundingRect, ISurface, BoundingRect)
Returns the intersection curves between this surface and the provided other surface. Both surfaces are bound by rectangles.
Declaration
ICurve[] Intersect(BoundingRect thisBounds, ISurface other, BoundingRect otherBounds)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | thisBounds | Bounds for this surface |
| ISurface | other | Other surface |
| BoundingRect | otherBounds | Bounds of other surface |
Returns
| Type | Description |
|---|---|
| ICurve[] | Array of intersection curves |
Intersect(BoundingRect, ISurface, BoundingRect, GeoPoint)
Returns the intersection curves between this surface and the provided other surface. Both surfaces are bound by rectangles.
Declaration
ICurve Intersect(BoundingRect thisBounds, ISurface other, BoundingRect otherBounds, GeoPoint seed)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | thisBounds | Bounds for this surface |
| ISurface | other | Other surface |
| BoundingRect | otherBounds | Bounds of other surface |
| GeoPoint | seed |
Returns
| Type | Description |
|---|---|
| ICurve | Array of intersection curves |
Intersect(ICurve, BoundingRect, out GeoPoint[], out GeoPoint2D[], out Double[])
Returns the intersection of the provided curve with this surface.
The result may be empty.
Declaration
void Intersect(ICurve curve, BoundingRect uvExtent, out GeoPoint[] ips, out GeoPoint2D[] uvOnFaces, out double[] uOnCurve3Ds)
Parameters
| Type | Name | Description |
|---|---|---|
| ICurve | curve | The curve to be intersected with |
| BoundingRect | uvExtent | |
| GeoPoint[] | ips | Resulting 3d intersection points |
| GeoPoint2D[] | uvOnFaces | u/v values of the intersection points on this surface |
| System.Double[] | uOnCurve3Ds | u parameter of intersection points on the curve |
IsExtruded(GeoVector)
returns true, if the provided direction can be interpreted as an extrusion direction of the surface
Declaration
bool IsExtruded(GeoVector direction)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoVector | direction |
Returns
| Type | Description |
|---|---|
| System.Boolean |
IsVanishingProjection(Projection, Double, Double, Double, Double)
Returns true if the given projection makes the surface disappear, i.e. degenerate to an edge.
Declaration
bool IsVanishingProjection(Projection p, double umin, double umax, double vmin, double vmax)
Parameters
| Type | Name | Description |
|---|---|---|
| Projection | p | the projection |
| System.Double | umin | |
| System.Double | umax | |
| System.Double | vmin | |
| System.Double | vmax |
Returns
| Type | Description |
|---|---|
| System.Boolean | true if vanishing, falso otherwise |
Make3dCurve(ICurve2D)
Returns a 3-dimensional curve from the given 2-dimensional curve. the 2-dimensional curve is interpreted in the u/v system of the surface.
Declaration
ICurve Make3dCurve(ICurve2D curve2d)
Parameters
| Type | Name | Description |
|---|---|---|
| ICurve2D | curve2d | the base curve |
Returns
| Type | Description |
|---|---|
| ICurve | corresponding 3-d curve |
MakeCanonicalForm()
Modifies this surface into a more canonical form and returns the modification for the parametric space which reverses this modification in 2d. Curves in the parametric space of this surface will become invalid unless modified by the returned transformation.
Declaration
ModOp2D MakeCanonicalForm()
Returns
| Type | Description |
|---|---|
| ModOp2D | 2d modification for the parametric space |
MakeFace(SimpleShape)
Makes a Face from this surface with the given bounds in the parametric (u/v) space.
Declaration
Face MakeFace(SimpleShape simpleShape)
Parameters
| Type | Name | Description |
|---|---|---|
| SimpleShape | simpleShape | the bounds |
Returns
| Type | Description |
|---|---|
| Face | the created face or null |
MaxDist(GeoPoint2D, GeoPoint2D, out GeoPoint2D)
used internally. the maximum distance of the 3d curve, formed by the uv-line from sp to ep, to the 3d-line from PointAt(sp) to PointAt(ep)
Declaration
double MaxDist(GeoPoint2D sp, GeoPoint2D ep, out GeoPoint2D mp)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | sp | |
| GeoPoint2D | ep | |
| GeoPoint2D | mp | The uv point where this distance occurres |
Returns
| Type | Description |
|---|---|
| System.Double |
Modify(ModOp)
Modifies this surface with the given operation
Declaration
void Modify(ModOp m)
Parameters
| Type | Name | Description |
|---|---|---|
| ModOp | m | how to modif |
Orientation(GeoPoint)
Returns the orientation of the provided point. The sign of the result may be used to distinguish between inside and outside.
Declaration
double Orientation(GeoPoint p)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p |
Returns
| Type | Description |
|---|---|
| System.Double |
PerpendicularFoot(GeoPoint)
Returns a list of perpendicular foot points of the surface. The list may be empty
Declaration
GeoPoint2D[] PerpendicularFoot(GeoPoint fromHere)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | fromHere | Source point for the perpendicular foot |
Returns
| Type | Description |
|---|---|
| GeoPoint2D[] | Array of foot-points, may be empty |
PointAt(GeoPoint2D)
Returns the 3-dimensional point at the given u/v point
Declaration
GeoPoint PointAt(GeoPoint2D uv)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | uv | position |
Returns
| Type | Description |
|---|---|
| GeoPoint | point |
PositionOf(GeoPoint)
Returns the u/v position of the given point. It is assumed that the point is on the surface, if not the result is undetermined.
Declaration
GeoPoint2D PositionOf(GeoPoint p)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint | p | point |
Returns
| Type | Description |
|---|---|
| GeoPoint2D | position |
ReverseOrientation()
Reverses the orientation of this surface. The normal vector will point to the other side after this operation. The returned ModOp2D determins how (u,v) coordinates of the parameter space have to be transformed to define the same 3d point.
Declaration
ModOp2D ReverseOrientation()
Returns
| Type | Description |
|---|---|
| ModOp2D | Transformation of the parameter space |
SameGeometry(BoundingRect, ISurface, BoundingRect, Double, out ModOp2D)
Returns true if this surface and the other surface are geometrically identical, i.e. describe the same surface
in 3D space. The may have a different u/v system. The returned firstToSecond contains
the ModOp to convert from the u/v system of the first surface to the second surface.
Declaration
bool SameGeometry(BoundingRect thisBounds, ISurface other, BoundingRect otherBounds, double precision, out ModOp2D firstToSecond)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | thisBounds | Bounds for this surface |
| ISurface | other | Other surface |
| BoundingRect | otherBounds | Bounds of other surface |
| System.Double | precision | Required precision |
| ModOp2D | firstToSecond | Transformation between different u/v systems |
Returns
| Type | Description |
|---|---|
| System.Boolean | True if the surfaces are geometrically equal |
SetBounds(BoundingRect)
Mostly used internally
Declaration
void SetBounds(BoundingRect boundingRect)
Parameters
| Type | Name | Description |
|---|---|---|
| BoundingRect | boundingRect |
UDirection(GeoPoint2D)
Returns the direction at the given u/v point in direction of the u-axis
Declaration
GeoVector UDirection(GeoPoint2D uv)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | uv | position |
Returns
| Type | Description |
|---|---|
| GeoVector | direction |
VDirection(GeoPoint2D)
Returns the direction at the given u/v point in direction of the v-axis
Declaration
GeoVector VDirection(GeoPoint2D uv)
Parameters
| Type | Name | Description |
|---|---|---|
| GeoPoint2D | uv | position |
Returns
| Type | Description |
|---|---|
| GeoVector | direction |