Calcolo di un triangolo inscritto in un cerchio

ZioAntonio1
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

Risposte
eugenio.amitrano
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})
}

ZioAntonio1
...ciao, grazie della risposta.

Purtroppo non ha funzionato molto :(

IL risultato è stato una figura con 4 lati simile ad una freccia..... bohh...


grazie ancora

mircoFN1
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

ZioAntonio1
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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.