<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Poor Monkey definitely has a small problem,<br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="width: 98%; display: inline-block;">
<div id="divRplyFwdMsg" dir="ltr"><font color="#000000" face="Calibri, sans-serif" style="font-size: 11pt;"><b>From:</b> alice-teachers <alice-teachers-bounces+mrgrog=outlook.com@lists.andrew.cmu.edu> on behalf of Vanderhyde, James <vanderhyde@sxu.edu><br>
<b>Sent:</b> Thursday, April 27, 2017 3:40 PM<br>
<b>To:</b> Alice educators<br>
<b>Subject:</b> alice-teacher One last Alice 2 bug</font>
<div> </div>
</div>
<div>
<div style="-ms-word-wrap: break-word;">There is a bug in “Turn to face.” It occurs when the object turns to face the direction it’s already facing, but it only occurs when the object is facing a certain direction relative to the world. It appears to be when
 the object is turned at an angle anywhere between 90 and 135 degrees, to the right or to the left. The position of the object doesn’t matter, just the orientation relative to the world.
<div><br>
</div>
<div>See attached a2w file for an example. The penguin is to the left and slightly behind the monkey. The monkey repeatedly turns to face the penguin. Run the program and wait for it. The monkey’s orientation is unstable and eventually blows up. One time the
 transformation matrix ended up full of NaNs and an “Error during simulation" occurred; I am pasting the stack trace below as well.</div>
<div><br>
</div>
<div>Thanks.</div>
<div><br>
</div>
<div>James<br>
<div>
<div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; -ms-word-wrap: break-word;">
—<br>
James Vanderhyde<br>
Assistant Professor, Computer Science<br>
Program Director, Master of Applied Computer Science<br>
Saint Xavier University<br>
3700 W. 103rd St.<br>
Chicago, IL 60655<br>
773-298-3454</div>
</div>
<br>
<div>
<div>Error during simulation.</div>
<div><br>
</div>
<div></div>
</div>
</div>
</div>
<div style="-ms-word-wrap: break-word;">
<div>
<div>
<div></div>
<div>Alice version: 2.4.3</div>
<div>os.name: Mac OS X</div>
<div>os.version: 10.12.4</div>
<div>os.arch: x86_64</div>
<div>java.vm.name: Java HotSpot(TM) 64-Bit Server VM</div>
<div>java.vm.version: 20.65-b04-468</div>
<div>user.dir: /Applications/Alice 2.4.app/Contents/Required</div>
<div><br>
</div>
<div>Throwable that caused the error:</div>
<div>javax.vecmath.SingularMatrixException: cannot invert matrix</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.vecmath.Matrix4d.invertGeneral(Matrix4d.java:1996)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.vecmath.Matrix4d.invert(Matrix4d.java:1951)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.Transformable.getInverseAbsoluteTransformation(Transformable.java:121)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.ReferenceFrame.getTransformation(ReferenceFrame.java:58)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.ReferenceFrame.getTransformation(ReferenceFrame.java:69)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.Transformable.getTransformation(Transformable.java:152)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.ReferenceFrame.getPosition(ReferenceFrame.java:72)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.ReferenceFrame.getPosition(ReferenceFrame.java:75)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.scenegraph.Transformable.calculatePointAt(Transformable.java:237)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.Transformable.calculatePointAt(Transformable.java:480)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.AbstractPointAtAnimation$RuntimeAbstractPointAtAnimation.getTargetMatrix33(AbstractPointAtAnimation.java:76)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.AbstractPointAtAnimation$RuntimeAbstractPointAtAnimation.getTargetQuaternion(AbstractPointAtAnimation.java:80)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.OrientationAnimation$RuntimeOrientationAnimation.update(OrientationAnimation.java:64)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.AbstractPointAtAnimation$RuntimeAbstractPointAtAnimation.update(AbstractPointAtAnimation.java:86)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.DoInOrder$RuntimeDoInOrder.childUpdate(DoInOrder.java:58)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.DoInOrder$RuntimeDoInOrder.update(DoInOrder.java:101)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.DoInOrder$RuntimeDoInOrder.childUpdate(DoInOrder.java:58)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.DoInOrder$RuntimeDoInOrder.update(DoInOrder.java:101)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.response.CallToUserDefinedResponse$RuntimeCallToUserDefinedResponse.update(CallToUserDefinedResponse.java:88)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.behavior.TriggerBehavior.internalSchedule(TriggerBehavior.java:69)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.Behavior.schedule(Behavior.java:235)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.Sandbox.scheduleBehaviors(Sandbox.java:70)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.World.scheduleBehaviors(World.java:457)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.World.schedule(World.java:499)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.core.clock.DefaultClock.schedule(DefaultClock.java:99)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.authoringtool.AuthoringTool$7.run(AuthoringTool.java:723)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.authoringtool.util.DefaultScheduler.simulateOnce(DefaultScheduler.java:117)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.authoringtool.util.DefaultScheduler.run(DefaultScheduler.java:78)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.scheduler.AbstractScheduler.run(AbstractScheduler.java:45)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue.access$400(EventQueue.java:82)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue$2.run(EventQueue.java:676)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue$2.run(EventQueue.java:674)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessController.doPrivileged(Native Method)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Dialog$1.run(Dialog.java:1049)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Dialog$3.run(Dialog.java:1101)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessController.doPrivileged(Native Method)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Dialog.show(Dialog.java:1099)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.show(Component.java:1615)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.setVisible(Component.java:1567)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Window.setVisible(Window.java:846)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Dialog.setVisible(Dialog.java:984)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.swing.DialogManager.showModalDialog(DialogManager.java:66)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.swing.DialogManager.showDialog(DialogManager.java:136)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.authoringtool.AuthoringTool.play(AuthoringTool.java:5587)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at edu.cmu.cs.stage3.alice.authoringtool.Actions$16.actionPerformed(Actions.java:181)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.processMouseEvent(Component.java:6414)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.processEvent(Component.java:6179)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Container.processEvent(Container.java:2084)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.dispatchEventImpl(Component.java:4776)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Container.dispatchEventImpl(Container.java:2142)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.dispatchEvent(Component.java:4604)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Container.dispatchEventImpl(Container.java:2128)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Window.dispatchEventImpl(Window.java:2492)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.Component.dispatchEvent(Component.java:4604)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue.access$400(EventQueue.java:82)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue$2.run(EventQueue.java:676)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue$2.run(EventQueue.java:674)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessController.doPrivileged(Native Method)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue$3.run(EventQueue.java:690)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue$3.run(EventQueue.java:688)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessController.doPrivileged(Native Method)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)</div>
<div><span class="x_Apple-tab-span" style="white-space: pre;"></span>at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)</div>
<div><br>
</div>
<div>Alice version: 2.4.3</div>
<div>os.name: Mac OS X</div>
<div>os.version: 10.12.4</div>
<div>os.arch: x86_64</div>
<div>java.vm.name: Java HotSpot(TM) 64-Bit Server VM</div>
<div>java.vm.version: 20.65-b04-468</div>
<div>user.dir: /Applications/Alice 2.4.app/Contents/Required</div>
<div><br>
</div>
<div>cannot invert: NaN, NaN, NaN, NaN</div>
<div>NaN, NaN, NaN, NaN</div>
<div>NaN, NaN, NaN, NaN</div>
<div>NaN, NaN, NaN, NaN</div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>