room101/VECTOR.CPP

79 lines
2.1 KiB
C++
Raw Normal View History

#include "vector.hpp"
#include "memory.hpp"
#include "file.hpp"
/*******************************************************************************
** VectorDegreeFix
*******************************************************************************/
void
VectorDegreeFix(Vector dst)
{
while (dst[0] < 0.0f) dst[0] += 360.0f;
while (dst[0] >= 360.0f) dst[0] -= 360.0f;
while (dst[1] < 0.0f) dst[1] += 360.0f;
while (dst[1] >= 360.0f) dst[1] -= 360.0f;
while (dst[2] < 0.0f) dst[2] += 360.0f;
while (dst[2] >= 360.0f) dst[2] -= 360.0f;
}
/*******************************************************************************
** VectorAngleBetween
*******************************************************************************/
float
VectorAngleBetween(Vector A, Vector B)
{
Vector C, D;
VectorNormalize(C, A);
VectorNormalize(D, B);
return VectorDotProduct(C, D);
}
/*******************************************************************************
** VectorArrayRegister
*******************************************************************************/
/*
int
VectorArrayRegister(Vector** array, Vector vector)
{
int i;
for (i = 0; i < SizeOf(array); i++)
{
if (VectorEqual(array[i], vector))
{
return i;
}
}
MEMORY_RESIZE(array, i + 1);
VectorCopy(array[i], vector);
return i;
}
*/
/*******************************************************************************
** VectorArrayArrayCreate
*******************************************************************************/
VectorArrayArray
VectorArrayArrayCreate(int n)
{
return (VectorArrayArray) MemoryAlloc(n, sizeof(Vector*));
}
/*******************************************************************************
** VectorArrayArrayRead
*******************************************************************************/
VectorArrayArray
VectorArrayArrayRead(FILE* file)
{
VectorArrayArray array = VectorArrayArrayCreate(IntRead(file));
for (int i = 0; i < NumberOf(array); i++)
{
array[i] = (Vector*) MemoryRead(file);
}
return array;
}