Skip to content

Commit

Permalink
Removed an additional eval operation from delta and sample_size setters
Browse files Browse the repository at this point in the history
  • Loading branch information
Onur R. Bingol committed Apr 19, 2018
1 parent 0a92974 commit dc0f518
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions geomdl/Abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,18 @@ def sample_size(self, value):
if self._knot_vector is None or len(self._knot_vector) == 0:
warn("Cannot determine the delta value. Please set knot vector before setting the sample size.")
return
# Set global variable
self._sample_size = value

# To make it operate like linspace, we have to know the starting and ending points.
start = self._knot_vector[self._degree]
stop = self._knot_vector[-(self._degree+1)]

# Clean up the curve points list, if necessary
self._reset_evalpts()

# Set delta value
self.delta = (stop - start) / float(value - 1)
self._delta = (stop - start) / float(value - 1)

# Set sample size
self._sample_size = value

@property
def delta(self):
Expand Down Expand Up @@ -525,18 +528,22 @@ def sample_size(self, value):
(self._knot_vector_v is None or len(self._knot_vector_v) == 0):
warn("Cannot determine the delta value. Please set knot vectors before setting the sample size.")
return
# Set global variable
self._sample_size = value

# To make it operate like linspace, we have to know the starting and ending points.
start_u = self._knot_vector_u[self._degree_u]
stop_u = self._knot_vector_u[-(self._degree_u+1)]
start_v = self._knot_vector_v[self._degree_v]
stop_v = self._knot_vector_v[-(self._degree_v+1)]

# Clean up the surface points lists, if necessary
self._reset_evalpts()

# Set delta values
self.delta_u = (stop_u - start_u) / float(value - 1)
self.delta_v = (stop_v - start_v) / float(value - 1)
self._delta_u = (stop_u - start_u) / float(value - 1)
self._delta_v = (stop_v - start_v) / float(value - 1)

# Set sample size
self._sample_size = value

@property
def delta_u(self):
Expand Down Expand Up @@ -613,12 +620,16 @@ def delta(self):
@delta.setter
def delta(self, value):
if isinstance(value, float):
self.delta_u = value
self.delta_v = value
if float(value) <= 0 or float(value) >= 1:
raise ValueError("Surface evaluation delta should be between 0.0 and 1.0")
self._delta_u = value
self._delta_v = value
elif isinstance(value, (list, tuple)):
if len(value) == 2:
self.delta_u = value[0]
self.delta_v = value[1]
if float(value[0]) <= 0 or float(value[0]) >= 1 or float(value[1]) <= 0 or float(value[1]) >= 1:
raise ValueError("Surface evaluation delta should be between 0.0 and 1.0")
self._delta_u = value[0]
self._delta_v = value[1]
else:
raise ValueError("Surface requires 2 delta values")
else:
Expand Down

0 comments on commit dc0f518

Please sign in to comment.