Align object to vector using Dgame framework

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Jul 13 12:07:53 PDT 2015


On Monday, 13 July 2015 at 16:11:03 UTC, codenstuff wrote:
> I've been using Dgame framework for simple simulations.
>
> I need moving object to be aligned to their velocity vectors.
>
> How is it possible to do that using Dgame?
>
> I see that shape object has setRotation and setRotationCenter. 
> Not sure how to use these to achieve the effect. I realize that 
> default is rotation around origin. This causes objects to drift 
> over time.
>
> Sample code
>
> struct GameObject {
> Point **position;
> // array of pointers to object points
> Point *acceleration;
> Point *velocity;
> double max_speed;
> double max_force;
> }
>
> shape = new Shape(Geometry.Quads,
> Vertex(object.position[0].x, object.position[0].y),
> Vertex(object.position[1].x, object.position[1].y),
> Vertex(object.position[2].x, object.position[2].y),
> Vertex(object.position[3].x, object.position[3].y))
>
> // rotate shape to face velocity here
> shape.move(object.velocity.x, object.velocity.y);

This is not really a game development forum but here you go:
auto rads = atan2(object.velocity.y, object.velocity.x); // 
returns radians
auto degs = angle * (180.0f / PI); // convert to degrees
shape.rotate(degs);

I suggest you store velocity as a Vector2f to avoid later 
confusion.

It is really useful to learn basic linear algebra, and 
trigonometry as a game developer - you will be needing these 
tools on a daily basis.


More information about the Digitalmars-d-learn mailing list