private void Update(float updatePeriod) { float angle = -updatePeriod * 0.6f; stick = RotateLine(stick, angle); var minX = Math.Min(stick.Item1.X, stick.Item2.X); var maxX = Math.Max(stick.Item1.X, stick.Item2.X); var minY = Math.Min(stick.Item1.Y, stick.Item2.Y); var maxY = Math.Max(stick.Item1.Y, stick.Item2.Y); stickAABB = Box2dExtensions.CreateFromMinMax(minX, minY, maxX, maxY); }
/// <summary> /// Transforms elements coordinates relative to given canvas system into [0,1]² with y-axis heading upwards /// </summary> /// <param name="element">Input UIElement to transform relative to canvas</param> /// <param name="canvas">Input canvas for realative transformation</param> public static Box2D ConvertBounds(this UIElement element, Canvas canvas) { var p00 = new Point(0, 0); var p11 = p00 + (Vector)element.RenderSize; var leftTop = (Vector)element.TranslatePoint(p00, canvas); var rightBottom = (Vector)element.TranslatePoint(p11, canvas); //flip y coordinate return(Box2dExtensions.CreateFromMinMax( (float)leftTop.X, (float)(canvas.ActualHeight - rightBottom.Y), (float)rightBottom.X, (float)(canvas.ActualHeight - leftTop.Y))); }
private void Render() { GL.Clear(ClearBufferMask.ColorBufferBit); GL.Color3(Color.CornflowerBlue); DrawLine(stick); GL.Color3(Color.YellowGreen); DrawAABB(stickAABB); GL.Color3(Color.Black); DrawAABB(Box2dExtensions.CreateFromCenterSize(0, 0, 0.02f, 0.02f)); }
private MyVisual() { //setup texBird = TextureLoader.FromBitmap(Resourcen.bird1); //background clear color GL.ClearColor(Color.White); //for transparency in textures GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.Enable(EnableCap.Blend); // for transparency in textures //generate birds for (float delta = .1f; delta < .5f; delta += .1f) { birds.Add(Box2dExtensions.CreateFromCenterSize(rotCenter.X - delta, rotCenter.Y - delta, .1f, .1f)); birds.Add(Box2dExtensions.CreateFromCenterSize(rotCenter.X - delta, rotCenter.Y + delta, .1f, .1f)); birds.Add(Box2dExtensions.CreateFromCenterSize(rotCenter.X + delta, rotCenter.Y - delta, .1f, .1f)); birds.Add(Box2dExtensions.CreateFromCenterSize(rotCenter.X + delta, rotCenter.Y + delta, .1f, .1f)); } }