Changelog
Source:NEWS.md
SolidAngleR 0.6.0
Breaking changes
-
omega()removed. The same multivariate-normal orthant integration is now exposed as the"mvn"branch of the dispatcher; callcompute_solid_angle(V, method = "mvn")instead. The new branch returns the scalar normalized solid angle directly; the per-dimension geometric mean previously available asomega(V)$omega_scaledis recovered ascompute_solid_angle(V, method = "mvn")^(1 / ncol(V)).
New features
-
compute_solid_angle()gainsmethod = "mvn", dispatching tomvtnorm::pmvnorm()over the positive orthant via the Genz-Bretz quasi-Monte Carlo algorithm. Emits the same condition-number and high-dimension warnings as the deletedomega().
Documentation
- Complete roxygen rewrite across every exported symbol: explicit
@titlein sentence case, expanded@descriptionand@detailswith LaTeX equations, verified@referenceswith DOI/ISBN, runnable@examples, and bidirectional@seealsolinks between the S3 constructordiagnose_cone()and itsprint,summary,plotmethods. - Internal helpers consistently marked
@noRd; section headers acrossR/normalised to the canonical triple-line convention. -
_pkgdown.ymlreference index reorganised into ten functional groups (main interface, low-dimensional formulas, series methods, geometric and decomposition methods, Monte Carlo and sampling, cone diagnostics, cone structure utilities, geometry primitives, visualisation, S3 methods). - Vignettes: heading-spacing convention enforced across all seven articles; chunk evaluation in vignette
a.theoretical-analysis.Rmdset uniformly toeval = FALSE. 2D plots in vignettesb,c,d,f,g, and the histogram, density, validation, performance, vMF and rejection-comparison panels ofe, converted to ggplot2 with subtitle and grey caption per the package plot-default rule. Two diagrammatic visualisations ine(Givens rotation arrow plot and Lambertian ray-tracing side view) are intentionally retained in base graphics, where the arrow / normal annotations are clearer than the ggplot equivalent.
SolidAngleR 0.5.1
Bug fixes
-
tridiagonal_series(): default convergence tolerance relaxed from.Machine$double.eps(about 2.2e-16) to1e-10, eliminating spurious non-convergence on well-posed tridiagonal cones whose signed residuals sit at double-precision noise level. Callers that need the previous strict behaviour must passtol = .Machine$double.epsexplicitly. - Numerical-stability corrections in the closed-form, series and geometric backends (
formulas_2d.R,formulas_3d.R,geometric_methods.R,series_hypergeometric.R,series_tridiagonal.R) and in the compiled sampling layer (cone_sampling.cpp,cone_sampling.R), removing silentNaNoutputs at near-degenerate configurations.
SolidAngleR 0.5.0
New features
- Class
cone_diagnosisgains its full S3 triad: new methodssummary.cone_diagnosis(),print.summary.cone_diagnosis()andplot.cone_diagnosis().diagnose_cone()returns a first-class diagnostic object with the full print, summary and plot lifecycle. -
compute_solid_angle()dispatch path extended: whenmethod = "auto"the internal router now consults acone_diagnosisobject instead of recomputing the spectral and tridiagonal tests on every call.
SolidAngleR 0.4.0
Changes
- Package passes
R CMD check --as-cranwith zero errors, zero warnings and a single system-level NOTE (non-portable compiler flag inherited from the host toolchain). - Internal utility layer consolidated around the canonical helpers
get_colored_symbol(),require_package()andrequire_packages(); deprecated internal helpers removed. No exported signature has changed.
SolidAngleR 0.3.0
New features
- New export
shinySolidAngleR(): launches ashinydashboardfront-end in the user’s browser with one tab per computational backend (closed forms, hypergeometric series, tridiagonal series, decomposition, geometric methods,omega()wrapper, cone sampler, diagnostics).
SolidAngleR 0.2.0
New features
- New export
hypergeometric_series_nd(): general Ribando series for arbitrary dimension n greater than or equal to 4, with recursive weak-composition enumeration of the multi-index lattice. Removes the earlier n = 2, 3 restriction ofhypergeometric_series()and integrates transparently intocompute_solid_angle(). - New export
plot_cone_3d(): interactive plotly rendering of simplicial cones, showing generator rays, triangular faces and the spherical cap cut by the cone. -
generate_cone_samples()now dispatches to a C++ backend through Rcpp and RcppArmadillo. The O(n) Givens-rotation pipeline replaces the pure-R inner loop and delivers order-of-magnitude speed-ups on batch sampling. The R call signature is unchanged.
Dependencies
-
RcppandRcppArmadillopromoted fromSuggeststoImportsandLinkingTo; the package now requires a C++17 toolchain at install time.
Bug fixes
-
hypergeometric_series_nd(): corrected the multi-index recursion that produced incorrect values for n greater than or equal to 4 at intermediate truncation depths.
SolidAngleR 0.1.0
First public release. Forty-three exported functions covering the full stack of solid-angle methods for polyhedral cones in arbitrary dimension. The closed forms for n = 2 and n = 3 are exposed through solid_angle_2d(), solid_angle_2d_inner(), solid_angle_3d(), solid_angle_3d_det(), solid_angle_3d_from_rays(), solid_angle_polyhedral() and spherical_triangle_area(). The Aomoto-Ribando hypergeometric series for positive-definite cones in n = 2, 3 is available as hypergeometric_series(), and the Fitisone-Zhou tridiagonal specialisation as tridiagonal_series(). The recursive Brion-Vergne decomposition, which lifts the positive-definiteness restriction, is exposed through decompose_cone() and solid_angle_decomposition(). Mazonka’s geometric formulas for right circular, segmental, surface and intersecting cones are wrapped by solid_angle_cone(), solid_angle_cone_segment(), solid_angle_conical_surface(), solid_angle_intersecting_cones() and plotIntersectingCones(). Feasibility-domain computations via multivariate-normal integration are delivered by omega(), and the Monte Carlo estimator by solid_angle_monte_carlo(). The pure-R uniform-on-cone sampler stack includes generate_cone_sample(), generate_cone_samples(), generate_hollow_cone_sample(), generate_point_on_sphere(), theta_to_omega(), omega_to_theta(), generate_planar_angle_inverse(), generate_planar_angle_rejection(), rotate_from_canonical(), rejection_cost() and verify_cone_uniformity(). Matrix and cone utilities are provided as compute_associated_matrix(), compute_dot_product_matrix(), is_positive_definite(), is_tridiagonal(), is_linearly_independent(), normalize_vectors(), create_tridiagonal_cone(), cross_product_3d(), angle_between() and lhuilier_angle(). Extreme-ray extraction is handled by generate_spanning_trees(). The main dispatcher is compute_solid_angle(), with batch form compute_solid_angles(), and the diagnostic constructor diagnose_cone() with its print.cone_diagnosis() method.
Pre-release development history
Three correctness fixes predate the first public commit and are recorded here for provenance. First, the operator-precedence bug gamma(1 + x / 2) was replaced by the correct gamma((1 + x) / 2) throughout hypergeometric_series_2d(), hypergeometric_series_3d() and tridiagonal_series(); the incorrect form produced approximately tenfold errors in solid-angle computations. Second, every geometric backend was renormalised to return values in [0, 1]: solid_angle_cone(), solid_angle_polyhedral(), solid_angle_cone_segment() and solid_angle_intersecting_cones() previously returned steradians and are now consistent with the series and Monte Carlo backends. Third, spurious names attributes were stripped from compute_solid_angle() and solid_angle_decomposition() return values.