lines

- A LINE is a proportion that is derived from the relationship of two points
Proportion is relative to the baseline / grid
Infinite Series of Points?
A point on a line cannot be known unless the line intersects another element. Anything else is speculation.
Explorer generates the equation for the line in line in two forms
ax + by + c = 0
y = mx + n
A new Line
object is instantiated with two points. These points are used to derive the coefficients of the equations.
//calculate equation 1 coefficients
// ax + by + c form
var cmd = `clearall
a = (${pt1.y}) - (${pt2.y})
a
b = (${pt2.x}) - (${pt1.x})
b
c = ((${pt1.x}) * (${pt2.y})) - ((${pt2.x}) * (${pt1.y}))
c
eq = (a) * x + (b) * y + (c)
eq
;
// run script and parse result
// returns a, b, c, eq
var result = alg(cmd).split("\n");
this.a = result[0];
this.b = result[1];
this.c = result[2];
this.eq = result[3];
//calculate equation 1 coefficients
// y = mx + n form
// var bVal = getNumber(this.b);
if (this.b != "0") {
var cmd = `
m = -(a) / (b)
m
n = -(c) / (b)
n
eq2 = m * x + n
eq2
`;
// run script and parse result
// returns m, n, eq2
var result = alg(cmd).split("\n");
this.m = result[0];
this.n = result[1];
this.eq2 = result[2];
}
// set xRoot if not horizontal
if (this.a != 0) {
this.xRoot = alg( `roots(eq, x)` );
} else {
// leave undefined
}
// set yRoot if not vertical
if (this.b != 0) {
this.yRoot = alg( `roots(eq, y)` );
} else {
// leave undefined
}
I am treating Algebrite as a secondary scripting engine within Explorer.
The only reason I am parsing the coefficient values out of Algebrite is to display on the screen. The primary concern is finding the roots of the equations.
The xRoot
and yRoot
are used in the getX
and getY
functions when determining intersection points
//////////////////////////////////////////////
// get y value for corresponding x
this.getY = function(x) {
var y, deg;
if (this.yRoot) {
deg = alg( `deg(${this.yRoot})` );
if (deg == 1) {
y = alg( `subst((${x}), x, (${this.yRoot}))` );
} else {
y = this.yRoot;
}
} else {
// y is undefined
}
return y;
}
// get x value for corresponding y
this.getX = function(y) {
var x, deg;
if (this.xRoot) {
deg = alg( `deg(${this.xRoot})` );
if (deg == 1) {
x = alg( `subst((${y}), y, (${this.xRoot}))` );
} else {
x = this.xRoot;
}
} else {
// x is undefined
}
return x;
}