Radianti, coseni e seni
L'operazione più complessa rimane quindi quella di calcolare le coordinate x e y dei vertici una volta ottenuti gli angoli corrispondenti. Per farlo si possono usare i valori di coseno e seno di ogni angolo.
// height=400
let semiLarghezza;
let semiAltezza;
let raggio;
let mostraValori = false;
function setup() {
createCanvas(windowWidth, 400);
colorMode(HSL);
textAlign(CENTER,CENTER);
textSize(14);
semiLarghezza = width/2;
semiAltezza = height/2;
raggio = min(width,height)*0.4;
cursor(HAND);
}
function windowResized() {
resizeCanvas(windowWidth, 400);
semiLarghezza = width/2;
semiAltezza = height/2;
raggio = min(width,height)*0.4;
}
function draw() {
let radianti = frameCount / 200;
let coseno = cos(radianti)*raggio;
let seno = sin(radianti)*raggio;
background(255);
translate(semiLarghezza,semiAltezza);
strokeWeight(1);
// assi cartesiani
stroke(80);
line(-semiLarghezza,0,semiLarghezza,0);
line(0,-semiAltezza,0,semiAltezza);
// proiezioni
stroke(90);
line(coseno,seno,coseno,0);
line(coseno,seno,0,seno);
// radianti
noStroke();
fill(0,100,50,0.05);
arc( 0,0, raggio*2,raggio*2, 0,radianti );
// punto
// fill(80);
// circle(coseno,seno,7);
strokeWeight(3);
// segmento
stroke(80);
line(0,0,coseno,seno);
// coseno
stroke(100,90,45);
line(0,0,coseno,0);
// seno
stroke(220,100,55);
line(0,0,0,seno);
// testi
stroke(100,0.5);
strokeWeight(2);
fill(70);
text( "-x", -semiLarghezza+15, -10 );
text( "+x", semiLarghezza-15, -10 );
text( "-y", 15, -semiAltezza+10 );
text( "+y", 15, semiAltezza-10 );
let semiRadianti = (radianti % TWO_PI) / 2;
if (mostraValori) {
fill(0,100,50);
text( nfc(radianti % TWO_PI, 2), cos(semiRadianti)*raggio/2, sin(semiRadianti)*raggio/2 );
fill(100,90,40);
text( nfc(cos(radianti)*1.01,2), coseno, -10 );
fill(220,100,55);
text( nfc(sin(radianti)*1.01,2), 21, seno );
} else {
fill(0,100,50);
text( "rad", cos(semiRadianti)*raggio/2, sin(semiRadianti)*raggio/2 );
fill(100,90,40);
text( "cos", coseno, -10 );
fill(220,100,55);
text( "sin", 15, seno );
}
}
function mouseClicked() {
mostraValori = !mostraValori;
}
Ipotizzando un segmento (grigio in figura):
- lungo 1
- con un'estremità in 0,0
- con inclinazione pari a rad (angolo in radianti)
il coseno di rad corrisponde alla coordinata x della seconda estremità del segmento
il seno di rad corrisponde alla coordinata y della seconda estremità del segmento
Cliccare sulla figura per visualizzare i valori numerici corrispondenti.