Skip to contents

SolidAngleR 0.6.0


Breaking changes

  • omega() removed. The same multivariate-normal orthant integration is now exposed as the "mvn" branch of the dispatcher; call compute_solid_angle(V, method = "mvn") instead. The new branch returns the scalar normalized solid angle directly; the per-dimension geometric mean previously available as omega(V)$omega_scaled is recovered as compute_solid_angle(V, method = "mvn")^(1 / ncol(V)).


New features

  • compute_solid_angle() gains method = "mvn", dispatching to mvtnorm::pmvnorm() over the positive orthant via the Genz-Bretz quasi-Monte Carlo algorithm. Emits the same condition-number and high-dimension warnings as the deleted omega().


Documentation

  • Complete roxygen rewrite across every exported symbol: explicit @title in sentence case, expanded @description and @details with LaTeX equations, verified @references with DOI/ISBN, runnable @examples, and bidirectional @seealso links between the S3 constructor diagnose_cone() and its print, summary, plot methods.
  • Internal helpers consistently marked @noRd; section headers across R/ normalised to the canonical triple-line convention.
  • _pkgdown.yml reference 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.Rmd set uniformly to eval = FALSE. 2D plots in vignettes b, c, d, f, g, and the histogram, density, validation, performance, vMF and rejection-comparison panels of e, converted to ggplot2 with subtitle and grey caption per the package plot-default rule. Two diagrammatic visualisations in e (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) to 1e-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 pass tol = .Machine$double.eps explicitly.
  • 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 silent NaN outputs at near-degenerate configurations.


SolidAngleR 0.5.0


New features


SolidAngleR 0.4.0


Changes

  • Package passes R CMD check --as-cran with 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() and require_packages(); deprecated internal helpers removed. No exported signature has changed.


SolidAngleR 0.3.0


New features

  • New export shinySolidAngleR(): launches a shinydashboard front-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 of hypergeometric_series() and integrates transparently into compute_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

  • Rcpp and RcppArmadillo promoted from Suggests to Imports and LinkingTo; 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.