bspy


Namebspy JSON
Version 4.1 PyPI version JSON
download
home_pagehttp://github.com/ericbrec/BSpy
SummaryLibrary for manipulating and rendering non-uniform B-splines
upload_time2024-03-29 00:18:49
maintainerNone
docs_urlNone
authorEric Brechner
requires_python>=3.0
licenseMIT
keywords opengl bspline b-spline nub tkinter
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # BSpy
Library for manipulating and rendering B-spline curves, surfaces, and multidimensional manifolds with non-uniform knots in each dimension.

The [Manifold](https://ericbrec.github.io/BSpy/bspy/manifold.html) abstract base class for [Hyperplane](https://ericbrec.github.io/BSpy/bspy/hyperplane.html) and [Spline](https://ericbrec.github.io/BSpy/bspy/spline.html).

The [Spline](https://ericbrec.github.io/BSpy/bspy/spline.html) class has a method to fit multidimensional data for 
scalar and vector functions of single and multiple variables. It also has methods to create points, lines, circular arcs, spheres, cones, cylinders, tori, ruled surfaces, surfaces of revolution, and four-sided patches. 
Other methods add, subtract, and multiply splines, as well as confine spline curves to a given range. 
There are methods to evaluate spline values, derivatives, integrals, normals, curvature, and the Jacobian, as well as methods that return spline representations of derivatives, normals, integrals, graphs, and convolutions. In addition, there are methods to manipulate the domain of splines, including trim, join, reparametrize, transpose, reverse, add and remove knots, elevate and extrapolate, and fold and unfold. There are methods to manipulate the range of splines, including dot product, cross product, translate, rotate, scale, and transform. Finally, there are methods to compute the zeros and contours of a spline and to intersect two splines.

The [Hyperplane](https://ericbrec.github.io/BSpy/bspy/hyperplane.html) class has methods to create individual hyperplanes in any dimension, along with axis-aligned hyperplanes and hypercubes.

The [Solid](https://ericbrec.github.io/BSpy/bspy/solid.html) class has methods to construct n-dimensional solids from trimmed [Manifold](https://ericbrec.github.io/BSpy/bspy/manifold.html) boundaries. Each solid consists of a list of boundaries and a Boolean value that indicates if the solid contains infinity. Each [Boundary](https://ericbrec.github.io/BSpy/bspy/solid.html) consists of a manifold (currently a [Hyperplane](https://ericbrec.github.io/BSpy/bspy/hyperplane.html) or [Spline](https://ericbrec.github.io/BSpy/bspy/spline.html)) and a domain solid that trims the manifold. Solids have methods to form the intersection, union, difference, and complement of solids. There are methods to compute point containment, winding numbers, surface integrals, and volume integrals. There are also methods to translate, transform, and slice solids.

The [SplineOpenGLFrame](https://ericbrec.github.io/BSpy/bspy/splineOpenGLFrame.html) class is an 
[OpenGLFrame](https://pypi.org/project/pyopengltk/) with custom shaders to render spline curves and surfaces. Spline surfaces with more 
than 3 dependent variables will have their added dimensions rendered as colors (up to 6 dependent variables are supported). Only tested on Windows systems.

The [Viewer](https://ericbrec.github.io/BSpy/bspy/viewer.html) class is a 
[tkinter.Tk](https://docs.python.org/3/library/tkinter.html) app that hosts a 
[SplineOpenGLFrame](https://ericbrec.github.io/BSpy/bspy/splineOpenGLFrame.html), 
a tree view full of solids and splines, and a set of controls to adjust and view the selected solids and splines. Only tested on Windows systems.

The [Graphics](https://ericbrec.github.io/BSpy/bspy/viewer.html#Graphics) class is a graphics engine to display splines.
It launches a [Viewer](https://ericbrec.github.io/BSpy/bspy/viewer.html) and issues commands to the viewer for use 
in [jupyter](https://jupyter.org/) notebooks and other scripting environments. Only tested on Windows systems.

![Viewer rendering the Utah teapot](https://ericbrec.github.io/BSpy/viewer.png "Viewer rendering the Utah teapot")

The full documentation for BSpy can be found [here](https://ericbrec.github.io/BSpy), its GitHub project can be found 
[here](https://github.com/ericbrec/BSpy), a test suite can be found [here](https://github.com/ericbrec/BSpy/tree/main/tests), and
a set of examples, including a jupyter notebook, can be found [here](https://github.com/ericbrec/BSpy/tree/main/examples).

### Release 3.0 breaking changes
* Removed accuracy as a member of Spline
* Spline.common_basis is now a static method (see documentation for details)
* Spline.least_squares changed arguments (see documentation for details)
* Spline.load always returns a list of splines

### Release 4.0 breaking changes
* Removed Spline blossom method
* Removed DrawableSpline class
* Changed bspyApp class name to Viewer
* Changed Viewer listbox to use extended selection (shift and ctrl keys)
* Changed bspyGraphics class name to Graphics
* Moved DrawableSpine methods for adjusting spline appearance to Viewer (see documentation for details)
* Spline.bspline_values changed arguments (see documentation for details)
* Spline.intersect changed return values (see documentation for details)

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/ericbrec/BSpy",
    "name": "bspy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.0",
    "maintainer_email": null,
    "keywords": "opengl, bspline, B-spline, nub, tkinter",
    "author": "Eric Brechner",
    "author_email": "ericbrec@msn.com",
    "download_url": "https://files.pythonhosted.org/packages/db/01/51300eebebeb541223d530c18d3f1477f99b7528ae6abc162e080de562cb/bspy-4.1.tar.gz",
    "platform": null,
    "description": "# BSpy\r\nLibrary for manipulating and rendering B-spline curves, surfaces, and multidimensional manifolds with non-uniform knots in each dimension.\r\n\r\nThe [Manifold](https://ericbrec.github.io/BSpy/bspy/manifold.html) abstract base class for [Hyperplane](https://ericbrec.github.io/BSpy/bspy/hyperplane.html) and [Spline](https://ericbrec.github.io/BSpy/bspy/spline.html).\r\n\r\nThe [Spline](https://ericbrec.github.io/BSpy/bspy/spline.html) class has a method to fit multidimensional data for \r\nscalar and vector functions of single and multiple variables. It also has methods to create points, lines, circular arcs, spheres, cones, cylinders, tori, ruled surfaces, surfaces of revolution, and four-sided patches. \r\nOther methods add, subtract, and multiply splines, as well as confine spline curves to a given range. \r\nThere are methods to evaluate spline values, derivatives, integrals, normals, curvature, and the Jacobian, as well as methods that return spline representations of derivatives, normals, integrals, graphs, and convolutions. In addition, there are methods to manipulate the domain of splines, including trim, join, reparametrize, transpose, reverse, add and remove knots, elevate and extrapolate, and fold and unfold. There are methods to manipulate the range of splines, including dot product, cross product, translate, rotate, scale, and transform. Finally, there are methods to compute the zeros and contours of a spline and to intersect two splines.\r\n\r\nThe [Hyperplane](https://ericbrec.github.io/BSpy/bspy/hyperplane.html) class has methods to create individual hyperplanes in any dimension, along with axis-aligned hyperplanes and hypercubes.\r\n\r\nThe [Solid](https://ericbrec.github.io/BSpy/bspy/solid.html) class has methods to construct n-dimensional solids from trimmed [Manifold](https://ericbrec.github.io/BSpy/bspy/manifold.html) boundaries. Each solid consists of a list of boundaries and a Boolean value that indicates if the solid contains infinity. Each [Boundary](https://ericbrec.github.io/BSpy/bspy/solid.html) consists of a manifold (currently a [Hyperplane](https://ericbrec.github.io/BSpy/bspy/hyperplane.html) or [Spline](https://ericbrec.github.io/BSpy/bspy/spline.html)) and a domain solid that trims the manifold. Solids have methods to form the intersection, union, difference, and complement of solids. There are methods to compute point containment, winding numbers, surface integrals, and volume integrals. There are also methods to translate, transform, and slice solids.\r\n\r\nThe [SplineOpenGLFrame](https://ericbrec.github.io/BSpy/bspy/splineOpenGLFrame.html) class is an \r\n[OpenGLFrame](https://pypi.org/project/pyopengltk/) with custom shaders to render spline curves and surfaces. Spline surfaces with more \r\nthan 3 dependent variables will have their added dimensions rendered as colors (up to 6 dependent variables are supported). Only tested on Windows systems.\r\n\r\nThe [Viewer](https://ericbrec.github.io/BSpy/bspy/viewer.html) class is a \r\n[tkinter.Tk](https://docs.python.org/3/library/tkinter.html) app that hosts a \r\n[SplineOpenGLFrame](https://ericbrec.github.io/BSpy/bspy/splineOpenGLFrame.html), \r\na tree view full of solids and splines, and a set of controls to adjust and view the selected solids and splines. Only tested on Windows systems.\r\n\r\nThe [Graphics](https://ericbrec.github.io/BSpy/bspy/viewer.html#Graphics) class is a graphics engine to display splines.\r\nIt launches a [Viewer](https://ericbrec.github.io/BSpy/bspy/viewer.html) and issues commands to the viewer for use \r\nin [jupyter](https://jupyter.org/) notebooks and other scripting environments. Only tested on Windows systems.\r\n\r\n![Viewer rendering the Utah teapot](https://ericbrec.github.io/BSpy/viewer.png \"Viewer rendering the Utah teapot\")\r\n\r\nThe full documentation for BSpy can be found [here](https://ericbrec.github.io/BSpy), its GitHub project can be found \r\n[here](https://github.com/ericbrec/BSpy), a test suite can be found [here](https://github.com/ericbrec/BSpy/tree/main/tests), and\r\na set of examples, including a jupyter notebook, can be found [here](https://github.com/ericbrec/BSpy/tree/main/examples).\r\n\r\n### Release 3.0 breaking changes\r\n* Removed accuracy as a member of Spline\r\n* Spline.common_basis is now a static method (see documentation for details)\r\n* Spline.least_squares changed arguments (see documentation for details)\r\n* Spline.load always returns a list of splines\r\n\r\n### Release 4.0 breaking changes\r\n* Removed Spline blossom method\r\n* Removed DrawableSpline class\r\n* Changed bspyApp class name to Viewer\r\n* Changed Viewer listbox to use extended selection (shift and ctrl keys)\r\n* Changed bspyGraphics class name to Graphics\r\n* Moved DrawableSpine methods for adjusting spline appearance to Viewer (see documentation for details)\r\n* Spline.bspline_values changed arguments (see documentation for details)\r\n* Spline.intersect changed return values (see documentation for details)\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Library for manipulating and rendering non-uniform B-splines",
    "version": "4.1",
    "project_urls": {
        "Bug Tracker": "http://github.com/ericbrec/BSpy/issues",
        "Homepage": "http://github.com/ericbrec/BSpy"
    },
    "split_keywords": [
        "opengl",
        " bspline",
        " b-spline",
        " nub",
        " tkinter"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5f0709e17035ca9d4c3708cd9563df7cccc19ad935ba39fe40b7730147abd4ef",
                "md5": "607134fda0cae1d0ce203b66407582e8",
                "sha256": "32a312063f44e1ae7f26ff4b1561edb3b9a5f6da020ea8e16ed0e96ed4a04c51"
            },
            "downloads": -1,
            "filename": "bspy-4.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "607134fda0cae1d0ce203b66407582e8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.0",
            "size": 105137,
            "upload_time": "2024-03-29T00:18:47",
            "upload_time_iso_8601": "2024-03-29T00:18:47.124449Z",
            "url": "https://files.pythonhosted.org/packages/5f/07/09e17035ca9d4c3708cd9563df7cccc19ad935ba39fe40b7730147abd4ef/bspy-4.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db0151300eebebeb541223d530c18d3f1477f99b7528ae6abc162e080de562cb",
                "md5": "73e3be7be78713946563294283a6de88",
                "sha256": "6cd150c330dd8bff424574ad86b61cd2907a24b3e8e8de7b0b2bc9fdcd34e680"
            },
            "downloads": -1,
            "filename": "bspy-4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "73e3be7be78713946563294283a6de88",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.0",
            "size": 99872,
            "upload_time": "2024-03-29T00:18:49",
            "upload_time_iso_8601": "2024-03-29T00:18:49.013200Z",
            "url": "https://files.pythonhosted.org/packages/db/01/51300eebebeb541223d530c18d3f1477f99b7528ae6abc162e080de562cb/bspy-4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-29 00:18:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ericbrec",
    "github_project": "BSpy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "bspy"
}
        
Elapsed time: 0.33003s