Calcolo di un triangolo inscritto in un cerchio

Messaggioda ZioAntonio » 10/04/2006, 11:11

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
ZioAntonio
Starting Member
Starting Member
 
Messaggio: 6 di 11
Iscritto il: 06/04/2006, 09:59

Messaggioda eugenio.amitrano » 12/04/2006, 07:29

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})
}
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 49 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda ZioAntonio » 13/04/2006, 10:36

...ciao, grazie della risposta.

Purtroppo non ha funzionato molto :(

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


grazie ancora
ZioAntonio
Starting Member
Starting Member
 
Messaggio: 8 di 11
Iscritto il: 06/04/2006, 09:59

Messaggioda mircoFN » 13/04/2006, 12:14

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
"La matematica non si capisce, alla matematica ci si abitua" von Neumann.
"The strength of a chain cannot be increased by improving the strongest links" D. Broek.
mircoFN
Cannot live without
Cannot live without
 
Messaggio: 202 di 3188
Iscritto il: 04/03/2006, 12:01

Messaggioda ZioAntonio » 13/04/2006, 13:28

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
ZioAntonio
Starting Member
Starting Member
 
Messaggio: 10 di 11
Iscritto il: 06/04/2006, 09:59


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite