This commit is contained in:
wyj committed 2026-08-25 22:45:43 -04:00
commit d30f9ac56c
56 files changed
+40776

No files matched your search

+56
View File
@@ -0,0 +1,56 @@
#include "spacetime.h"
#include <stdlib.h>
typedef struct {
double escape_radius;
} MinkowskiContext;
static int minkowski_eval(const SpacetimeSource *source, double t,
const double x[3], MetricData *metric) {
(void)source;
(void)t;
(void)x;
*metric = (MetricData){
.alpha = 1.0,
.gamma = {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}};
return 0;
}
static SpacetimeRayStatus minkowski_classify(const SpacetimeSource *source,
double t, const double x[3]) {
const MinkowskiContext *context = source->context;
const double radius_squared = x[0] * x[0] + x[1] * x[1] + x[2] * x[2];
(void)t;
return radius_squared >= context->escape_radius * context->escape_radius
? SPACETIME_RAY_ESCAPED
: SPACETIME_RAY_ACTIVE;
}
static void minkowski_destroy(SpacetimeSource *source) {
free(source->context);
source->context = NULL;
source->ops = NULL;
}
static const SpacetimeOps minkowski_ops = {
.eval = minkowski_eval,
.classify = minkowski_classify,
.destroy = minkowski_destroy,
};
int spacetime_create_minkowski(SpacetimeSource *source, double escape_radius) {
if (source == NULL || escape_radius <= 0.0)
return -1;
MinkowskiContext *context = malloc(sizeof *context);
if (context == NULL)
return -1;
context->escape_radius = escape_radius;
source->ops = &minkowski_ops;
source->context = context;
return 0;
}
int spacetime_create_default(SpacetimeSource *source) {
return spacetime_create_minkowski(source, 1024.0);
}