Mercurial > projects > chipmunkd
view trunk/chipmunkd/cpVect.d @ 13:c03a41d47b60
- finished all constraints properties
- implemented cpAssertWarn the mixin way
author | Extrawurst |
---|---|
date | Fri, 03 Dec 2010 21:38:01 +0100 |
parents | 7ebbd4d05553 |
children | df4ebc8add66 |
line wrap: on
line source
// written in the D programming language module chipmunkd.cpVect; import chipmunkd.cpVect_h; import chipmunkd.chipmunk_types_h; cpFloat cpvlength(const cpVect v) { return cpfsqrt( cpvdot(v, v) ); } cpVect cpvslerp(const cpVect v1, const cpVect v2, const cpFloat t) { cpFloat omega = cpfacos(cpvdot(v1, v2)); if(omega){ cpFloat denom = 1.0f/cpfsin(omega); return cpvadd(cpvmult(v1, cpfsin((1.0f - t)*omega)*denom), cpvmult(v2, cpfsin(t*omega)*denom)); } else { return v1; } } cpVect cpvslerpconst(const cpVect v1, const cpVect v2, const cpFloat a) { cpFloat angle = cpfacos(cpvdot(v1, v2)); return cpvslerp(v1, v2, cpfmin(a, angle)/angle); } cpVect cpvforangle(const cpFloat a) { return cpv(cpfcos(a), cpfsin(a)); } cpFloat cpvtoangle(const cpVect v) { return cpfatan2(v.y, v.x); } import std.string:format; string cpvstr(const cpVect v) { return .format("(%s,%s)",v.x, v.y); }