Calcolo di un triangolo inscritto in un cerchio
Rieccomi ragazzi...soliti miei calcoli
L'esigenza attuale sarebbe quella di disegnare un triancolo equilatero ma con la punta in alto...attualmente sono riuscito solo con punta verso destra...
// - points calculate -
_points.push({x:_size, y:0})
for(var i = 1; i < 3; i++){
var angle:Number =i*ang
var cat1:Number = _size*(Math.cos(angle*Math.PI/180))
var cat2:Number = _size*(Math.sin(angle*Math.PI/180))
_points.push({x:cat1, y:cat2})
}
..dove _size è il raggio del cerchio nel quale il triangolo viene inscritto
come posso calcolare gli altri due punti partendo dal primo punto _points.push({x:0, y:(_size*-1)}) ???
Grazie in anticipo...mentre continuo a tentare.
Buona giornata
Antonio
L'esigenza attuale sarebbe quella di disegnare un triancolo equilatero ma con la punta in alto...attualmente sono riuscito solo con punta verso destra...
// - points calculate -
_points.push({x:_size, y:0})
for(var i = 1; i < 3; i++){
var angle:Number =i*ang
var cat1:Number = _size*(Math.cos(angle*Math.PI/180))
var cat2:Number = _size*(Math.sin(angle*Math.PI/180))
_points.push({x:cat1, y:cat2})
}
..dove _size è il raggio del cerchio nel quale il triangolo viene inscritto
come posso calcolare gli altri due punti partendo dal primo punto _points.push({x:0, y:(_size*-1)}) ???
Grazie in anticipo...mentre continuo a tentare.
Buona giornata
Antonio
Risposte
non conosco questo metalinguaggio (simile al 'c'), comunque credo che sia cosi':
Ho applicato la rotazione di un punto intorno all'origine:
x1 = x0 * cos a - y0 * sin a
y1 = x0 * sin a + y0 * cos a
// - points calculate -
_points.push({x:0, y:(_size*-1)}
for(var i = 1; i <= 2; i++) {
var angle:Number =i*ang // il valore di ang deve essere 120
var cat1:Number = _size*(Math.sin(angle*Math.PI/180))
var cat2:Number = -1*_size*(Math.cos(angle*Math.PI/180))
_points.push({x:cat1, y:cat2})
}
Ho applicato la rotazione di un punto intorno all'origine:
x1 = x0 * cos a - y0 * sin a
y1 = x0 * sin a + y0 * cos a
// - points calculate -
_points.push({x:0, y:(_size*-1)}
for(var i = 1; i <= 2; i++) {
var angle:Number =i*ang // il valore di ang deve essere 120
var cat1:Number = _size*(Math.sin(angle*Math.PI/180))
var cat2:Number = -1*_size*(Math.cos(angle*Math.PI/180))
_points.push({x:cat1, y:cat2})
}
...ciao, grazie della risposta.
Purtroppo non ha funzionato molto
IL risultato è stato una figura con 4 lati simile ad una freccia..... bohh...
grazie ancora
Purtroppo non ha funzionato molto

IL risultato è stato una figura con 4 lati simile ad una freccia..... bohh...
grazie ancora
A prescindere dal linguaggio, che non conosco, l'algoritmo generale pre diseganre un triangolo equilatero generico di baricentro l'origine e lato $L$ è il seguente:
1) scelgo la direzione della punta: $\theta$ (angolo in radianti misurato in senso antiorario dall'asse $x$ positivo: se vuoi la punta in verticale $\theta=\pi/2$, per l'orizzontale $\theta=0$ ecc..)
2) Calcolo il raggio della circonf. circoscritta: $R=L*\sqrt3/3$
3) per $i=1..3$
$x_i=R\cos[\theta+(i-1)2\pi/3]$
$y_i=R\sin[\theta+(i-1)2\pi/3]$
Traducilo nel tuo linguaggio (attento alle unità di misura degli angoli) vedrai che funziona!
ciao
1) scelgo la direzione della punta: $\theta$ (angolo in radianti misurato in senso antiorario dall'asse $x$ positivo: se vuoi la punta in verticale $\theta=\pi/2$, per l'orizzontale $\theta=0$ ecc..)
2) Calcolo il raggio della circonf. circoscritta: $R=L*\sqrt3/3$
3) per $i=1..3$
$x_i=R\cos[\theta+(i-1)2\pi/3]$
$y_i=R\sin[\theta+(i-1)2\pi/3]$
Traducilo nel tuo linguaggio (attento alle unità di misura degli angoli) vedrai che funziona!
ciao
OK... fatta!!!
alla fine mi è bastato banalmente modificare la riga
var angle:Number =i*ang
in
var angle:Number =i*ang -90
Grazieee a tutti
alla fine mi è bastato banalmente modificare la riga
var angle:Number =i*ang
in
var angle:Number =i*ang -90
Grazieee a tutti