xxxxxxxxxx
85
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
push();
strokeWeight(10);
translate(width/2,height/2);
//***INPUT***VECTORIZED POINTS i, i-1, i+1
const p0 = createVector(0,25);
const p1 = createVector(-25,25);
const p2 = createVector(10,50);
//DRAWING POINTS i, i-1, i+1
const point0 = point(p0);
const point1 = point(p1);
const point2 = point(p2);
//DRAWING LINES
push()
strokeWeight(4);
line(p0.x, p0.y, p1.x, p1.y)
line(p0.x, p0.y, p2.x, p2.y)
pop()
//CREATING VECTOR LOOKING BEHIND AND AHEAD
const vecA = p5.Vector.sub(p1,p0);
const vecB = p5.Vector.sub(p2,p0);
//CALCULATING ANGLE BETWEEEN VECTORS
let angleFull = vecA.angleBetween(vecB);
//console.log(angleFull)
if(angleFull < 0) {
angleFull = 2 * PI + angleFull;
//console.log(angleFull);
}
//CALCULATING TRISECTION ANGLES
const angle_j = angleFull * 1/3;
const angle_k = angleFull * 1/2;
const angle_l = angleFull * 2/3;
//ROTATING VECTORS
const vector_j = rotateVector(vecA, angle_j);
const vector_k = rotateVector(vecA, angle_k);
const vector_l = rotateVector(vecA, angle_l);
//CALCULATING VECTOR MAGNITUDES
const mag_j = abs(((vecA.mag() + vecB.mag())/2)/sin(angleFull/3));
const mag_k = sqrt(2) * mag_j;
const mag_l = mag_j;
//PROJECTING TRISECTING NODES
const n0_j = vector_j.mult(mag_j);
const n0_k = vector_k.mult(mag_k);
const n0_l = vector_l.mult(mag_l);
//ADDING BASE i NODE
const n_j = p5.Vector.add(p0, n0_j)
const n_k = p5.Vector.add(p0, n0_k)
const n_l = p5.Vector.add(p0, n0_l)
stroke("red")
//DRAWING TRISECTING POINTS
const point_j = point(n_j); console.log(n_j);
const point_k = point(n_k); console.log(n_k);
const point_l = point(n_l);
//DRAWING LINES
strokeWeight(4);
line(n_j.x, n_j.y, n_k.x, n_k.y)
line(n_l.x, n_l.y, n_k.x, n_k.y)
pop();
//rect(0,0,100,100)
}
function rotateVector(vector, angle) {
const x2 = vector.x*cos(angle) - vector.y*sin(angle);
const y2 = vector.x*sin(angle) + vector.y*cos(angle);
const vecRotated = createVector(x2, y2);
const vecRotUni = vecRotated.normalize();
//console.log(x2,y2);
return vecRotated;
}