//Requires the robot and the motor manager so that it can choose default positions for the motor //and use the robot's transformation matrices. public PositionCalculator(Robot robot, MotorManager motorManager) { this.motorManager = motorManager; this.robot = robot; }
private Robot robot; //the robot to display! #endregion Fields #region Constructors public ViewPlatform(Viewport3D viewport, MotorManager motorManager, Robot robot) { this.robot = robot; robot.intialise(viewport); this.motorManager = motorManager; //Add myself as a listener for the motor manager: this.motorManager.addListener(this); //Create a focussed camera to watch the origin: focussedCamera = new FocussedCamera(200, 0, 0); //Create the perspective camera! camera = getCamera(focussedCamera.Location, focussedCamera.Direction); viewport.Camera = camera; //Now to construct the light: light = getLight(Colors.White,focussedCamera.Direction); ModelVisual3D visual = new ModelVisual3D(); visual.Content = light; viewport.Children.Add(visual); ModelVisual3D visual2 = new ModelVisual3D(); //Now add in the robot too! updateMotors(); outerModel = new Model3DGroup(); outerModel.Children.Add(robot.getRobot()); currentMatTransform = (MatrixTransform3D)MatrixTransform3D.Identity; TranslateTransform3D trans = new TranslateTransform3D(); outerModel.Children[0] = Transforms.applyTransform((Model3DGroup)outerModel.Children[0],currentMatTransform); visual2.Content = outerModel; viewport.Children.Add(visual2); //Phew! That should be it... viewport.ClipToBounds = true; }