aboutsummaryrefslogtreecommitdiff
path: root/curve.h
blob: c896a23ce79a9f9d037f8fb70ca5e4e9ffa31822 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cmath>
#include "vec3.h"
using namespace std;

class Curve {
public:
    virtual vec3 integrate(vec3 (*integrand)(vec3 s, vec3 ds), double delta) = 0;
};

class LineSegment : Curve {
private:
    vec3 a, b;
public:
    LineSegment(vec3 a_, vec3 b_) : a(a_), b(b_) {};

    vec3 integrate(vec3 (*integrand)(vec3 s, vec3 ds), double delta);
};

class Arc : Curve {
private:
    vec3 center;
    double radius;
    double angle[2]; /* start and end angles */
public:
    LineSegment(vec3 a_, vec3 b_) : a(a_), b(b_) {};

    vec3 integrate(vec3 (*integrand)(vec3 s, vec3 ds), double delta);
};