78 lines
1.9 KiB
C
78 lines
1.9 KiB
C
//
|
|
// Created by frederik on 1/11/25.
|
|
//
|
|
|
|
#include "MMS24-25.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdarg.h>
|
|
#include <math.h>
|
|
|
|
void info(char* fmt,...) {
|
|
printf("[\x1B[37;1m INFO \x1B[0m]\t\x1B[34m'");
|
|
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
vprintf(fmt, args);
|
|
va_end(args);
|
|
|
|
printf("'\x1B[0m\n");
|
|
}
|
|
|
|
void success(char* fmt,...) {
|
|
printf("[\x1B[32;1m SUCCESS \x1B[0m]\t\x1B[34m'");
|
|
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
vprintf(fmt, args);
|
|
va_end(args);
|
|
|
|
printf("'\x1B[0m\n");
|
|
}
|
|
|
|
void error(const char* fmt, ...) {
|
|
va_list args;
|
|
|
|
printf("<\x1B[31;1m ERROR \x1B[0m: \x1B[34m'");
|
|
va_start(args, fmt);
|
|
vprintf(fmt, args);
|
|
va_end(args);
|
|
printf("'\x1B[0m >\n");
|
|
exit(-1);
|
|
}
|
|
|
|
void testInterpolation() {
|
|
info("testInterpolation();");
|
|
|
|
double dRangeMin = -10;
|
|
double dRangeMax = 10;
|
|
double dRangeStep = 0.5;
|
|
|
|
for (double dX1=dRangeMin;dX1<dRangeMax;dX1+=dRangeStep) {
|
|
for (double dX2=dRangeMin;dX2<dRangeMax;dX2+=dRangeStep) {
|
|
for (double dY1=dRangeMin;dY1<dRangeMax;dY1+=dRangeStep) {
|
|
for (double dY2=dRangeMin;dY2<dRangeMax;dY2+=dRangeStep) {
|
|
for (double dX=dRangeMin;dX<dRangeMax;dX+=dRangeStep) {
|
|
if (dX1 == dX2 || dX1 == dX || dX2 == dX)
|
|
continue;
|
|
|
|
double dR1 = interpolateLine(dX1, dY1, dX2, dY2, dX);
|
|
double dR2 = interpolateLine(dX1, dY1, dX, dR1, dX2);
|
|
|
|
if (round(dR2*1e6) != round(dY2*1e6))
|
|
error("Failed assertion for: (%lf, %lf), (%lf, %lf) -> (%lf, %lf); %lf", dX1, dY1, dX2, dY2, dX, dR1, dR2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
success("testInterpolation();");
|
|
}
|
|
|
|
int main (int iArgC, char** ppcArgV){
|
|
testInterpolation();
|
|
|
|
return 0;
|
|
}
|