File: Equation.C

package info (click to toggle)
rosegarden 1%3A1.4.0-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 23,188 kB
  • ctags: 15,707
  • sloc: cpp: 148,264; xml: 4,687; python: 1,946; makefile: 1,146; perl: 1,033; sh: 587; ansic: 337; ruby: 173
file content (47 lines) | stat: -rw-r--r-- 1,021 bytes parent folder | download | duplicates (2)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// -*- c-basic-offset: 4 -*-


#include "Equation.h"

void Equation::solve(Unknown u, double &y, double &m, double &x, double &c)
{
    switch(u) {
    case Y: y = m*x + c; break;
    case M: m = (y - c) / x; break;
    case X: x = (y - c) / m; break;
    case C: c = y - m*x; break;
    }
}

void Equation::solve(Unknown u, int &y, double &m, int &x, int &c)
{
    switch(u) {
    case Y: y = (int)(m*x) + c; break;
    case M: m = (double)(y - c) / (double)x; break;
    case X: x = (int)((float)(y - c) / m); break;
    case C: c = y - (int)(m*x); break;
    }
}

void Equation::solveForYByEndPoints(Point a, Point b, double x, double &y)
{
     double m, c, y1, x1;

     m = (double)(b.y - a.y) / (double)(b.x - a.x);

     x1 = a.x; y1 = a.y;
     solve(C, y1, m, x1, c);
     solve(Y, y, m, x, c);
}

void Equation::solveForYByEndPoints(Point a, Point b, int x, int &y)
{
     double m;
     int c;

     m = (double)(b.y - a.y) / (double)(b.x - a.x);

     solve(C, a.y, m, a.x, c);
     solve(Y, y, m, x, c);
}