|
BRL-CAD
|
Data Structures | |
| class | BBNode |
| class | BRNode |
| class | CurveTree |
| class | PullbackContext |
| struct | PullbackStatistics |
| class | SurfaceTree |
Typedefs | |
| typedef std::shared_ptr< PullbackWorkBudget > | PullbackWorkBudgetHandle |
| typedef bool(* | PullbackCancellationCallback) (void *context) |
Definition at line 185 of file pullback.h.
Install thread-local cancellation, CPU-work, and no-progress limits for the current geometry job. A zero work limit disables that timer.
Definition at line 199 of file pullback.h.
|
extern |
Create a CPU-work budget shared by all threads assisting one geometry job. The budget follows the longest sequential worker path, rather than charging time while workers are descheduled or summing genuinely parallel work. A zero limit returns an unlimited handle.
|
extern |
Return the calling thread's current job budget so nested helper threads can participate in the same limit.
|
extern |
|
extern |
Join an existing job budget from a nested helper thread.
|
extern |
|
extern |
|
extern |
|
extern |
Record completion of one or more bounded solver operations. This heartbeat is independent of elapsed item deadlines and therefore keeps –no-item-budget runs cancellable when an algorithm stops advancing.
Propagate a helper thread's stop reason to the parent geometry job.
|
extern |
Milliseconds remaining on the calling thread's CPU-work budget. UINT64_MAX means no deadline is installed. This permits a bounded parent conversion job to propagate its original budget to helper threads without restarting the per-item limit.
|
extern |
| bool get_closest_point | ( | ON_2dPoint & | outpt, |
| const ON_BrepFace & | face, | ||
| const ON_3dPoint & | point, | ||
| const SurfaceTree * | tree = NULL, |
||
| double | tolerance = BREP_FCP_ROOT_EPSILON |
||
| ) |
approach:
find a point (u, v) for which S(u, v) is closest to point
– minimize the distance function: D(u, v) = sqrt(|S(u, v)-pt|^2)
– simplify by minimizing f(u, v) = |S(u, v)-pt|^2
– minimum occurs when the gradient is zero, i.e.
\[ \nabla f(u, v) = |\vec{S}(u, v)-\vec{p}|^2 = 0 \]
|
extern |
Pull an arbitrary model-space curve onto the given surface as a curve within the surface's domain when, for each point c = C(t) on the curve and the closest point s = S(u, v) on the surface, we have: distance(c, s) <= tolerance.
The resulting 2-dimensional curve will be approximated using the following process:
given two parameters on the curve t1 and t2 (which map to points p1 and p2 on the curve) let m be a parameter randomly chosen near the middle of the interval [t1, t2] ____ then the curve between t1 and t2 is flat if distance(C(m), p1p2) < flatness