d3drm: Implement D3DRMVectorDotProduct.
[wine/hacks.git] / dlls / d3drm / math.c
blobd9078fe4e734cab9ecbf67e28684b4e039f015c5
1 /*
2 * Copyright 2007 David Adam
3 * Copyright 2007 Vijay Kiran Kamuju
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <stdarg.h>
23 #include <assert.h>
24 #include <math.h>
26 #include "windef.h"
27 #include "winbase.h"
28 #include "wingdi.h"
29 #include "d3drmdef.h"
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(d3drm);
35 /* Add Two Vectors */
36 LPD3DVECTOR WINAPI D3DRMVectorAdd(LPD3DVECTOR d, LPD3DVECTOR s1, LPD3DVECTOR s2)
38 d->x=s1->x + s2->x;
39 d->y=s1->y + s2->y;
40 d->z=s1->z + s2->z;
41 return d;
44 /* Subtract Two Vectors */
45 LPD3DVECTOR WINAPI D3DRMVectorSubtract(LPD3DVECTOR d, LPD3DVECTOR s1, LPD3DVECTOR s2)
47 d->x=s1->x - s2->x;
48 d->y=s1->y - s2->y;
49 d->z=s1->z - s2->z;
50 return d;
53 /* Cross Product of Two Vectors */
54 LPD3DVECTOR WINAPI D3DRMVectorCrossProduct(LPD3DVECTOR d, LPD3DVECTOR s1, LPD3DVECTOR s2)
56 d->x=s1->y * s2->z - s1->z * s2->y;
57 d->y=s1->z * s2->x - s1->x * s2->z;
58 d->z=s1->x * s2->y - s1->y * s2->x;
59 return d;
62 /* Dot Product of Two vectors */
63 D3DVALUE WINAPI D3DRMVectorDotProduct(LPD3DVECTOR s1, LPD3DVECTOR s2)
65 D3DVALUE dot_product;
66 dot_product=s1->x * s2->x + s1->y * s2->y + s1->z * s2->z;
67 return dot_product;