Source code for plugins.alt

#
##
##  SPDX-FileCopyrightText: © 2007-2024 Benedict Verhegghe <bverheg@gmail.com>
##  SPDX-License-Identifier: GPL-3.0-or-later
##
##  This file is part of pyFormex 3.5  (Thu Feb  8 19:11:13 CET 2024)
##  pyFormex is a tool for generating, manipulating and transforming 3D
##  geometrical models by sequences of mathematical operations.
##  Home page: https://pyformex.org
##  Project page: https://savannah.nongnu.org/projects/pyformex/
##  Development: https://gitlab.com/bverheg/pyformex
##  Distributed under the GNU General Public License version 3 or later.
##
##  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 http://www.gnu.org/licenses/.
##
"""Some additional classes.

"""

from pyformex.coords import Coords

import numpy as np


[docs]class BoundVectors(Coords): """A collection of bound vectors in a 3D Cartesian space. Parameters: - `coords`: a (...,2,3) shaped array of bound vectors defined by their initial and terminal points. - `origins`, `vectors`: (...,3) shaped arrays defining the initial points and vectors from initial to terminal points. The default constructs a unit vector along the global x-axis. """ def __new__(clas, coords=None, origins=None, vectors=None): """Initialize the BoundVectors.""" if coords is None: coords = np.eye(2, 3, -1) if vectors is not None: coords = np.resize(coords, vectors.shape[:-1]+(2, 3)) coords[..., 1, :] = vectors if origins is not None: coords += origins[..., np.newaxis, :] elif coords.shape[-2:] != (2, 3): raise ValueError("Expected shape (2,3) for last two array axes.") return Coords.__new__(clas, coords)
[docs] def origins(self): """Return the initial points of the BoundVectors.""" return Coords(self[..., 0, :])
[docs] def heads(self): """Return the endpoints of the BoundVectors.""" return Coords(self[..., 1, :])
[docs] def vectors(self): """Return the vectors of the BoundVectors.""" return Coords(self.heads()-self.origins())
def actor(self, **kargs): """_This allows a BoundVectors object to be drawn directly.""" from pyformex.formex import connect return connect([self.origins(), self.heads()]).actor(**kargs)
# End