about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorArun Isaac2021-03-26 14:43:07 +0530
committerArun Isaac2021-03-26 14:48:48 +0530
commitb6e2f7875029d1a5a0f6f7a5761b5f3af1f7b448 (patch)
treef9a470f6e947a0cfc1bec1b542318bd8b66a857b /src
parent05f6d0e94e5603caa769137508cf005bea3c9adc (diff)
downloadsambal-b6e2f7875029d1a5a0f6f7a5761b5f3af1f7b448.tar.gz
sambal-b6e2f7875029d1a5a0f6f7a5761b5f3af1f7b448.tar.lz
sambal-b6e2f7875029d1a5a0f6f7a5761b5f3af1f7b448.zip
Simplify directory structure.
* setup.cfg: Specify the sambal package explicitly.
* src/sambal: Move to sambal.
Diffstat (limited to 'src')
-rw-r--r--src/sambal/__init__.py0
-rw-r--r--src/sambal/sambal.py65
2 files changed, 0 insertions, 65 deletions
diff --git a/src/sambal/__init__.py b/src/sambal/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/src/sambal/__init__.py
+++ /dev/null
diff --git a/src/sambal/sambal.py b/src/sambal/sambal.py
deleted file mode 100644
index c42ea44..0000000
--- a/src/sambal/sambal.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# sambal --- Sample balls, spheres, spherical caps
-# Copyright © 2021 Arun I <arunisaac@systemreboot.net>
-# Copyright © 2021 Murugesan Venkatapathi <murugesh@iisc.ac.in>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see
-# <https://www.gnu.org/licenses/>.
-
-from numpy import cos, dot, empty, log, sin, sqrt, pi
-from numpy.random import randn, random
-from numpy.linalg import norm
-
-def random_on_sphere(dim):
-    """Return a random vector uniformly distributed on the unit sphere."""
-    x = randn(dim)
-    return x / norm(x)
-
-def rotate_from_nth_canonical(x, axis):
-    """Rotate vector from around the nth canonical axis to the given axis.
-    """
-    xn = x[-1]
-    axisn = axis[-1]
-    if axisn != 1:
-        b = norm(axis[:-1])
-        a = (dot(x, axis) - xn*axisn) / b
-        s = sqrt(1 - axisn**2)
-        x = x + (xn*s + a*(axisn - 1))/b * axis
-        x[-1] = x[-1] + xn*(axisn - 1) - a*s \
-            - axisn*(xn*s + a*(axisn - 1))/b
-    return x
-
-def random_on_disk(axis, planar_angle):
-    """Return a random vector uniformly distributed on the periphery of a
-disk."""
-    dim = axis.size
-    x = empty(dim)
-    x[:-1] = sin(planar_angle) * random_on_sphere(dim - 1)
-    x[-1] = cos(planar_angle)
-    return rotate_from_nth_canonical(x, axis)
-
-def random_on_cap(axis, maximum_planar_angle):
-    """Return a random vector uniformly distributed on a spherical
-cap. The random planar angle is generated using rejection sampling.
-
-    """
-    # We apply the log function just to prevent the floats from
-    # underflowing.
-    dim = axis.size
-    box_height = (dim-2)*log(sin(min(maximum_planar_angle, pi/2)))
-    while True:
-        theta = maximum_planar_angle*random()
-        f = box_height + log(random())
-        if f < (dim-2)*log(sin(theta)):
-            break
-    return random_on_disk(axis, theta)