|
@@ -57,40 +57,42 @@ export class LineModel extends LineSegmentModel {
|
|
|
// otherwise O2.y<>0 => y = (O2.x * B1.x + O2.y * B1.y - O2.x * x) / O2.y
|
|
|
//
|
|
|
// Return: .app/components/intersection-component/models/intersection-model.js
|
|
|
- getIntersectionWithStraightLine(sl) {
|
|
|
+ getIntersectionWithStraightLine (sl) {
|
|
|
try {//D //leo
|
|
|
const A1 = this.pointA, A2 = this.pointB; // this = SL(A1,A2)
|
|
|
- const A3 = sl.pointA, A4 = sl.pointB; // sl = SL(A3, A4)
|
|
|
- var A1x = A1.posX, A1y = A1.posY, // A1 -> this
|
|
|
- A2x = A2.posX, A2y = A2.posY; // A2 -> this
|
|
|
- var B1x = A3.posX, B1y = A3.posY, // B1 -> sl
|
|
|
- B2x = A4.posX, B2y = A4.posY; // B2 -> sl
|
|
|
- var d1x = A2x - A1x, d1y = A2y - A1y, // d1 = A2-A1
|
|
|
- d2x = B2x - B1x, d2y = B2y - B1y, // d2 = B2-B1
|
|
|
- O1x = -d1y, O1y = d1x, // O1 = (-d1.y, d1.x) ortogonal a reta r=this
|
|
|
- O2x = -d2y, O2y = d2x, // O2 = (-d2.y, d2.x) ortogonal a reta s
|
|
|
- x, y; // P=(x,y) ponto procurado
|
|
|
+ const A3 = sl.pointA, A4 = sl.pointB; // sl = SL(A3, A4)
|
|
|
+ var A1x = A1.posX, A1y = A1.posY, // A1 -> this
|
|
|
+ A2x = A2.posX, A2y = A2.posY; // A2 -> this
|
|
|
+ var B1x = A3.posX, B1y = A3.posY, // B1 -> sl
|
|
|
+ B2x = A4.posX, B2y = A4.posY; // B2 -> sl
|
|
|
+ var d1x = A2x - A1x, d1y = A2y - A1y, // d1 = A2-A1
|
|
|
+ d2x = B2x - B1x, d2y = B2y - B1y, // d2 = B2-B1
|
|
|
+ O1x = -d1y, O1y = d1x, // O1 = (-d1.y, d1.x) ortogonal a reta r=this
|
|
|
+ O2x = -d2y, O2y = d2x, // O2 = (-d2.y, d2.x) ortogonal a reta s
|
|
|
+ x, y; // P=(x,y) ponto procurado
|
|
|
|
|
|
if (O2y * O1x - O1y * O2x == 0) { // "Reta: erro, divisao por zero"
|
|
|
- console.log("/app/components/line-component/models/line-model.js: erro: divisao por zero!");
|
|
|
+ console.log("app/components/line-component/models/line-model.js: erro: divisao por zero!"); //D
|
|
|
return null;
|
|
|
- }
|
|
|
+ }
|
|
|
x = (O2y * (O1x * A1x + O1y * A1y) - O1y * (O2x * B1x + O2y * B1y)) / (O2y * O1x - O1y * O2x);
|
|
|
if (Math.abs(O1y) > Erro)
|
|
|
y = (O1x * A1x + O1y * A1y - O1x * x) / O1y;
|
|
|
- else
|
|
|
+ else {
|
|
|
if (Math.abs(O2y) > Erro)
|
|
|
y = (O2x * B1x + O2y * B1y - O2x * x) / O2y;
|
|
|
- else
|
|
|
+ else {
|
|
|
if (O1y != 0.0)
|
|
|
y = (O1x * A1x + O1y * A1y - O1x * x) / O1y;
|
|
|
else
|
|
|
if (O2y != 0.0)
|
|
|
y = (O2x * B1x + O2y * B1y - O2x * x) / O2y;
|
|
|
else {
|
|
|
- console.log("/app/components/line-component/models/line-model.js: erro: O2y=0!");
|
|
|
+ console.log("app/components/line-component/models/line-model.js: erro: O2y=0!"); //D
|
|
|
return null;
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
//D console.log("line-model.js: getIntersectionWithStraightLine(sl): (" + x + "," + y + ") = " +
|
|
|
//D "inter(r(P("+A1x+","+A1y+"),P("+A2x+","+A2y+")), s(P("+B1x+","+B1y+"),P("+B2x+","+B2y+"))");
|
|
|
return [new IntersectionModel(x, y, undefined, this, sl, true, 0)];
|
|
@@ -109,7 +111,7 @@ export class LineModel extends LineSegmentModel {
|
|
|
|
|
|
|
|
|
// Starting point to intersection started with StraightLine
|
|
|
- getIntersection(geometricObject) {
|
|
|
+ getIntersection (geometricObject) {
|
|
|
try { //D //leo
|
|
|
//D console.log("line-model.js.getIntersection: tipo=" + geometricObject.elementClass);
|
|
|
switch (geometricObject.elementClass) { // ./app/core/enums/elements-class-enum.js: POINT=0; INTERSECTION_POINT=1; CIRCUMFERENCE=3; LINE=4; LINE_SEGMENT=6,...
|
|
@@ -121,7 +123,7 @@ export class LineModel extends LineSegmentModel {
|
|
|
return this.getIntersectionWithCircumference(geometricObject); //TODO melhor 'with' que 'by'
|
|
|
default: break;
|
|
|
}
|
|
|
- } catch (e) { console.log("app/components/line-component/models/line-model.js: getIntersection(.): erro!\n" + e.stack); }
|
|
|
+ } catch (e) { console.log("app/components/line-component/models/line-model.js: getIntersection(.): error " + e + "\n" + e.stack); }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -135,4 +137,4 @@ export class LineModel extends LineSegmentModel {
|
|
|
return new LineModel(pointA, pointB, label, id);
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+}
|