annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
1
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
2 // written in the D programming language
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
3
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
4 module chipmunkd.cpVect;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
5
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
6 import chipmunkd.cpVect_h;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
7 import chipmunkd.chipmunk_types_h;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
8
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
9 cpFloat
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
10 cpvlength(const cpVect v)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
11 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
12 return cpfsqrt( cpvdot(v, v) );
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
13 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
14
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
15 cpVect
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
16 cpvslerp(const cpVect v1, const cpVect v2, const cpFloat t)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
17 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
18 cpFloat omega = cpfacos(cpvdot(v1, v2));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
19
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
20 if(omega){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
21 cpFloat denom = 1.0f/cpfsin(omega);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
22 return cpvadd(cpvmult(v1, cpfsin((1.0f - t)*omega)*denom), cpvmult(v2, cpfsin(t*omega)*denom));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
23 } else {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
24 return v1;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
25 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
26 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
27
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
28 cpVect
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
29 cpvslerpconst(const cpVect v1, const cpVect v2, const cpFloat a)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
30 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
31 cpFloat angle = cpfacos(cpvdot(v1, v2));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
32 return cpvslerp(v1, v2, cpfmin(a, angle)/angle);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
33 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
34
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
35 cpVect
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
36 cpvforangle(const cpFloat a)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
37 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
38 return cpv(cpfcos(a), cpfsin(a));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
39 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
40
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
41 cpFloat
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
42 cpvtoangle(const cpVect v)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
43 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
44 return cpfatan2(v.y, v.x);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
45 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
46
13
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
47 import std.string:format;
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
48
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
49 string
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
50 cpvstr(const cpVect v)
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
51 {
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
52 return .format("(%s,%s)",v.x, v.y);
c03a41d47b60 - finished all constraints properties
Extrawurst
parents: 4
diff changeset
53 }