devo calcolare le coordinate del terzo vertice, mi interessa solo la
soluzione per il punto a sinistra del lato p0p1.
Qualunque suggerimento è gradito.
Grazie
r
> dati 2 punti, vertici di un triangolo equilatero
> p0(x0,y0)
> p1(x1,y1)
>
> devo calcolare le coordinate del terzo vertice, mi interessa solo la
> soluzione per il punto a sinistra del lato p0p1.
x = (x1 + x0)/2 - sqrt(3)(y1 - y0)/2,
y = (y1 + y0)/2 + sqrt(3)(x1 - x0)/2.
Questo si ottiene ruotando il vettore p0p1 di 60° in senso antiorario
intorno a p0, ammesso che sia questo ciò che tu intendi per "sinistra".
Maurizio
--
Per rispondermi via e-mail togli l'ovvio.
eccellente, quello che cercavo!
ieri sera, spero colpa dell'ora :-) mi ero perso in bicchiere d'acqua!
grazie ... 1000 a entrambi
saluti
r
nel caso piu' generale dati i vertici P(x0,y0) e P(x1,y1) del lato L3 ed
essendo gli altri due lati L1 e L2
le coordinate del vertice P(x3,y3) sono
[essendo A l'area del triangolo]:
x3=1/(2L3^2)(4A(y0-y1)-x0(L1^2-L2^2-L3^2)+x1(L1^2-L2^2+L3^2))
y3=1/(2L3^2)(4A(x1-x0)-y0(L1^2-l2^2-l3^2)+y1(L1^2-L2^2+L3^2))
il triangolo equilatero L1=L2=L3 e' un caso particolare dove appunto
x3=(x0+x1-sqrt(3)(y1-y0))/2
y3=(y0+y1+sqrt(3)(x1-x0))/2
nel caso del triangolo isoscele con L1=L2 = a*L3
si poteva dire
x3=(x0+x1-sqrt(4*a^2-1)(y1-y0))/2
y3=(y0+y1+sqrt(4*a^2-1)(x1-x0))/2
con a=1 per il triangolo equilatero.
.. ma perche' tutto questo? .. bohh!!! :-P
stavo facendo un lavoretto con excel ... si tratta del fiocco di neve
di koch ... grazie al vostro aiuto ho finito prima :-)
per chi interessato, questo il link dove scaricare il file excel 2007
https://sites.google.com/site/e90e50/random-topics/fiocco-di-neve-di-koch
questo invece il codice vba utilizzato di volta in volta per generare
la serie del grafico:
Sub test()
Dim tr(3, 1)
Dim res(), i As Long, l As Long
tr(0, 0) = 0
tr(0, 1) = 0
tr(1, 0) = 0.5
tr(1, 1) = VBA.Sqr(3) / 2
tr(2, 0) = 1
tr(2, 1) = 0
tr(3, 0) = 0
tr(3, 1) = 0
l = [livello]
[a2:b1000000].Clear
If l Then
res = k(tr)
For i = 2 To l
res = k(res)
Next
Else
res = tr
End If
[a2].Resize(UBound(res, 1) + 1, 2) = res
End Sub
Function k(tr())
Dim res(), v, i As Long, l As Long, t
ReDim res(UBound(tr, 1) * 4 + 2, 1)
For i = 1 To UBound(tr, 1)
v = Dividi_segmento(tr(i - 1, 0), tr(i, 0), tr(i - 1, 1), tr(i,
1))
For l = 1 To UBound(v) + 1
res(t, 0) = v(l - 1, 0)
res(t, 1) = v(l - 1, 1)
t = t + 1
Next
Next
res(t, 0) = tr(0, 0)
res(t, 1) = tr(0, 1)
k = res
End Function
Function Dividi_segmento( _
x_1, _
x_2, _
y_1, _
y_2)
Dim xx, yy, res(3, 1)
xx = x_2 - x_1
yy = y_2 - y_1
res(0, 0) = x_1
res(0, 1) = y_1
res(1, 0) = xx / 3 + x_1
res(1, 1) = yy / 3 + y_1
res(2, 0) = (xx + 2 * x_1) / 2 - VBA.Sqr(3) * (yy / 3) / 2
res(2, 1) = (yy + 2 * y_1) / 2 + VBA.Sqr(3) * (xx / 3) / 2
res(3, 0) = xx * 2 / 3 + x_1
res(3, 1) = yy * 2 / 3 + y_1
Dividi_segmento = res
End Function
probabilmente migliorabile ...
saluti
r
per i frattali di questo tipo e' più semplice usare Fractint.
Ad esempio per il fiocco di Koch basta usare i comandi tartaruga del sistema
Lsystem e scrivere
Angle 6
Axiom F--F--F
F=F+F--F+F
a proposito, il fiocco ha un area finita racchiusa in un perimetro
infinito.. sara' un paradosso? ;-)
io sono appassionato di excel ... mi concentro su questo
sui frattali non sono certo un esperto, li ho scoperti ieri sera :-)
credo approfondirò il tema che mi sembra assai intrigante ...
e magari chiederò ancora aiuto a voi esperti
saluti
r