Esempio n. 1
0
 def __call__(self, initial_value=None, current_value=None, random_state=None):
   random_state = random_state or np.random
   axis = variation_values.evaluate(
       self._axis, initial_value, current_value, random_state)
   angle = variation_values.evaluate(
       self._angle, initial_value, current_value, random_state)
   sine, cosine = np.sin(angle / 2), np.cos(angle / 2)
   return np.array([cosine, axis[0] * sine, axis[1] * sine, axis[2] * sine])
Esempio n. 2
0
 def __call__(self,
              initial_value=None,
              current_value=None,
              random_state=None):
     first_value = variation_values.evaluate(self._first, initial_value,
                                             current_value, random_state)
     second_value = variation_values.evaluate(self._second, initial_value,
                                              current_value, random_state)
     return self._op(first_value, second_value)
Esempio n. 3
0
 def __call__(self,
              initial_value=None,
              current_value=None,
              random_state=None):
     base_value = current_value if self._cumulative else initial_value
     return base_value * (variation_values.evaluate(
         self._variation, initial_value, current_value, random_state))
Esempio n. 4
0
 def __call__(self,
              initial_value=None,
              current_value=None,
              random_state=None):
     value = variation_values.evaluate(self._variation, initial_value,
                                       current_value, random_state)
     return self._op(value)
Esempio n. 5
0
 def __call__(self,
              initial_value=None,
              current_value=None,
              random_state=None):
     value = variation_values.evaluate(self._variation, initial_value,
                                       current_value, random_state)
     return np.asarray(value)[self._index]
Esempio n. 6
0
 def __call__(self,
              initial_value=None,
              current_value=None,
              random_state=None):
     h, s, v, alpha = variation_values.evaluate(
         (self._h, self._s, self._v, self._alpha), initial_value,
         current_value, random_state)
     return np.asarray(list(colorsys.hsv_to_rgb(h, s, v)) + [alpha])
Esempio n. 7
0
 def __call__(self,
              initial_value=None,
              current_value=None,
              random_state=None):
     return np.asarray(
         variation_values.evaluate([self._r, self._g, self._b, self._alpha],
                                   initial_value, current_value,
                                   random_state))
Esempio n. 8
0
 def apply_variations(self, physics, random_state):
   for element, variations in self._variations.items():
     binding = physics.bind(element)
     for attribute_name, variation_info in variations.items():
       current_value = getattr(binding, attribute_name)
       if variation_info.initial_value is None:
         variation_info.initial_value = copy.copy(current_value)
       setattr(binding, attribute_name, evaluate(
           variation_info.variation, variation_info.initial_value,
           current_value, random_state))
Esempio n. 9
0
 def __call__(self, initial_value=None, current_value=None, random_state=None):
   random_state = random_state or np.random
   q1 = variation_values.evaluate(self._quat, initial_value, current_value,
                                  random_state)
   q2 = current_value if self._cumulative else initial_value
   return np.array([
       q1[0]*q2[0] - q1[1]*q2[1] - q1[2]*q2[2] - q1[3]*q2[3],
       q1[0]*q2[1] + q1[1]*q2[0] + q1[2]*q2[3] - q1[3]*q2[2],
       q1[0]*q2[2] - q1[1]*q2[3] + q1[2]*q2[0] + q1[3]*q2[1],
       q1[0]*q2[3] + q1[1]*q2[2] - q1[2]*q2[1] + q1[3]*q2[0]])
Esempio n. 10
0
  def apply_variations(self, random_state):
    """Applies variations in-place to the specified MJCF element.

    Args:
      random_state: A `numpy.random.RandomState` instance.
    """
    for element, attribute_variations in self._variations.items():
      new_values = {}
      for attribute_name, variation_info in attribute_variations.items():
        current_value = getattr(element, attribute_name)
        if variation_info.initial_value is None:
          variation_info.initial_value = copy.copy(current_value)
        new_values[attribute_name] = evaluate(
            variation_info.variation, variation_info.initial_value,
            current_value, random_state)
      element.set_attributes(**new_values)