Draft: WorkingPlane, Pythonic style, improved the docstrings; added a graphic to explain the type of point that the functions return; maybe getLocalCoords() should be named getRelativeCoords(), as the return value is a relative vector referred to the plane.

This commit is contained in:
vocx-fc
2019-08-08 19:08:05 -05:00
committed by Yorik van Havre
parent 023cf12c50
commit 05cb2cb4c1

View File

@@ -828,11 +828,15 @@ class plane:
self.stored = None
def getLocalCoords(self, point):
"""Return the coordinates of a given point projected on the plane.
"""Return the coordinates of the given point, from the plane.
If the `point` was constructed using the plane as origin,
return the relative coordinates from the `point` to the plane.
A vector is calculated from the plane's `position`
to the external `point`, and this vector is projected into
each of the `u`, `v` and `axis` of the plane.
to the external `point`, and this vector is projected onto
each of the `u`, `v` and `axis` of the plane to determine
the local, relative vector.
Parameters
----------
@@ -842,7 +846,35 @@ class plane:
Returns
-------
Base::Vector3
The point projected on the plane.
The relative coordinates of the point from the plane.
See also
--------
getGlobalCoords
Notes
-----
The following graphic explains the coordinates.
::
g GlobalCoords (1, 11)
|
|
|
(n) p point (1, 6)
| LocalCoords (1, 1)
|
----plane--------c-------- position (0, 5)
In the graphic
* `p` is an arbitrary point, external to the plane
* `c` is the plane's `position`
* `g` is the global coordinates of `p` when added to the plane
* `n` is the relative coordinates of `p` when referred to the plane
To do
-----
Maybe a better name would be getRelativeCoords?
"""
pt = point.sub(self.position)
xv = DraftVecUtils.project(pt, self.u)
@@ -863,7 +895,50 @@ class plane:
return Vector(x, y, z)
def getGlobalCoords(self, point):
"returns the global coordinates of the given point, taken relatively to this working plane"
"""Return the coordinates of the given point, added to the plane.
If the `point` was constructed using the plane as origin,
return the absolute coordinates from the `point`
to the global origin.
The `u`, `v`, and `axis` vectors scale the components of `point`,
and the result is added to the planes `position`.
Parameters
----------
point : Base::Vector3
The external point.
Returns
-------
Base::Vector3
The coordinates of the point from the absolute origin.
See also
--------
getLocalCoords
Notes
-----
The following graphic explains the coordinates.
::
g GlobalCoords (1, 11)
|
|
|
(n) p point (1, 6)
| LocalCoords (1, 1)
|
----plane--------c-------- position (0, 5)
In the graphic
* `p` is an arbitrary point, external to the plane
* `c` is the plane's `position`
* `g` is the global coordinates of `p` when added to the plane
* `n` is the relative coordinates of `p` when referred to the plane
"""
vx = Vector(self.u).multiply(point.x)
vy = Vector(self.v).multiply(point.y)
vz = Vector(self.axis).multiply(point.z)