@@ -186,29 +186,18 @@ def make_ellipsoid2(self):
186
186
"Can not do rotational ellipse for a 2d robot plot. Set opt='trans'"
187
187
)
188
188
189
- # if not self.vell:
190
- # # Do the extra step for the force ellipse
191
- # try:
192
- # A = np.linalg.inv(A)
193
- # except:
194
- # A = np.zeros((2,2))
195
- if self .vell :
196
- # Do the extra step for the velocity ellipse
197
- A = np .linalg .inv (A )
189
+ # velocity ellipsoid is E = A^-1
190
+ # force ellipsoid is E = A
191
+ #
192
+ # rather than compute the inverse we can have base.ellipse() do it for us
193
+ # using the inverted argument. For the velocity ellipse we already have the
194
+ # inverse of E, it is A, so we set inverted=True.
198
195
199
196
if isinstance (self .centre , str ) and self .centre == "ee" :
200
197
centre = self .robot .fkine (self .q ).A [:3 , - 1 ]
201
198
else :
202
199
centre = self .centre
203
200
204
- # points on unit circle
205
- # theta = np.linspace(0.0, 2.0 * np.pi, 50)
206
- # y = np.array([np.cos(theta), np.sin(theta)])
207
- # RVC2 p 602
208
- # x = sp.linalg.sqrtm(A) @ y
209
-
210
- x , y = base .ellipse (A , inverted = False , centre = centre [:2 ], scale = self .scale )
201
+ x , y = base .ellipse (A , inverted = self .vell , centre = centre [:2 ], scale = self .scale )
211
202
self .x = x
212
203
self .y = y
213
- # = x[0,:] * self.scale + centre[0]
214
- # self.y = x[1,:] * self.scale + centre[1]
0 commit comments