|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2001
Città: Roma
Messaggi: 142
|
Non funziona la formula
Gentili programmatori, date un' occhiata al programmino sotto riportato, che dovrebbe servire a calcolare gli angoli di un triangolo disegnato su un' immagine con la funzione "Line" del VISUAL BASIC 6 e di cui in questo caso per fare un' esempio do le misure.
******************************************* Private Sub Command2_Click() Dim a, b, c, Alpha, Beta, Gamma As Double a = 10 b = 10 c = 10 Call Angoli(a, b, c, Alpha, Beta, Gamma) End Sub ************************************ Function Angoli(a, b, c, Alpha, Beta, Gamma) ' Alpha = lati bc ' beta = Lati ca ' Gamma = lati cb Alpha = ArcCos(b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c) Beta = ArcCos(a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c) Gamma = 180 - Alpha - Beta End Function ********************************************* Mandando in esecuzione quasta funzione mi da errore di "Sub o funzione non definita." In quest'altra formula ........................ Al posto di Cos (....... ) dovrei scrivere Cos alla meno 1 - Come fare con il VB6, quale è la sintassi giusta ? Alpha = Cos "alla -1" (b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c) Beta = Cos (a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c) Grazie, Zeno
__________________
ZENO |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2000
Città: Frittole
Messaggi: 2596
|
Boh!?! la funzione ArcCos è documentata, ma pure a me da errore.... non la vede come funzione vb.
__________________
Ryzen7 5800x ASUS Prime B550 Plus GTX 1660 Super Muletto: Athlon64 3000+ @2750mhz Ciuchino: intel 80286 @8mhz ram 384kb video ega msdos3.1 floppy 5-1/4 hd 10mb. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
ArcCos non è documentata... La devi derivare... Comunque quante volte hai fatto questa domanda ?
http://forum.hwupgrade.it/showthread...ghlight=ArcCos |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jun 2001
Città: Roma
Messaggi: 142
|
Scusa ma cosa vuol dire che la devo DERIVARE ? potresti darmi un 'esempio pratico perchè un esempio vale sicuramente di più di cento spiegazioni teoriche.
Ho incollato questa funzione che mi hai mandato ma non funziona, oppure sbalio a chiamare questa funzione Come la dovrei chiamre chiamare ? Call.........??? E poi cosa ottengo, non vedo le misure della lunghezza degli angoli. Io ho le tre lunghezze dei tre angoli *********************************** Function ArcCos(X As Double) ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) End Function *********************************** Comunque ARCCOS il VB6, pur descritta non la riconosce, mi sembra un grave errore del VB6. Grazia ancora Zeno Visodont
__________________
ZENO Ultima modifica di visodont : 30-05-2004 alle 10:40. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quella è la funzione arcoseno... VB di suo non l'ha e va scritta derivandola dalla funzione arcotangente
Quella che ti ho scritto è un funzione da mettere dentro al tuo codice VB (fuori da ogni procedura o funzione)... Utilizza quella funzione per ottenere le misure degli angoli secondo quanto ti hanno scritto negli altri post... Codice:
Private Sub Command2_Click() Dim a, b, c, Alpha, Beta, Gamma As Double a = 10 b = 10 c = 10 Call Angoli(a, b, c, Alpha, Beta, Gamma) End Sub Function ArcCos(X As Double) ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) End Function Function Angoli(a, b, c, Alpha, Beta, Gamma) ' Alpha = lati bc ' beta = Lati ca ' Gamma = lati cb Alpha = ArcCos(b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c) Beta = ArcCos(a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c) Gamma = 180 - Alpha - Beta End Function |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jun 2001
Città: Roma
Messaggi: 142
|
Ancora aiuto......
Caro Cionci,
sono proprio sfortunato ma..... ho provato questo codice che mi hai inviato gentilmente tu, e che riporto sotto, per poter usare ArcCos come funzione derivata in quanto il VB6 non ce l' ha. Caro Cionci, sono proprio sfortunato. Ho provato esattamente questo codice per ottenere un angolo conoscendo i lati del triangolo con la funzione ArcCos in modo derivato che mi hai molto gentilmente inviato tu, ma mi da il messaggio di errore 5, "Chiamata di routine o argomento non valido". Noto però che nella funzione ArcSen(X As Double ) ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) c' è una X alla quale non è assegnato nessun valore, forse è li il problema ? Ho seguito il programma passo passo e vedo che dalla funzione Angoli appena il puntatore si sposta su AcrCos salta subito alla funzione ArcCos(..........) come credo debba essere, ma proprio li mi da quell' errore e tutto si ferma con qualche mia imprecazione al VB6 ! Mi dispiacerebbe dovermi dichiarare vinto ! Anche perchè un mio collega è riuscito in quello che io vorrei fare e se non ci riesco, poi mi prende in giro per il resto della vita ! he...he...he..... Il collega mi ha inviato la sua soluzione, NON ha usato quella funzione e a fattouno stranissimo volo pindarico, molto lungo, per arrivare allo stesso risultato al quale si potrebbe arrivare molto semplicemente con il codice che tu mi hai inviato. Se la tua soluzione funzionasse davvero, sarebbe tutto risolto, con molta semplicità, farei un figurone con quel collega e gli potrei anche fare qualche amichevole sberleffo ! Già, ma poi il risultato sarebbe ( speriamo..sarà ) in radianti o in gradi ? Aspetto con ansia la tua risposta e grazie ancora per l' aiuto ! Zeno VisOdont ********************************************************* Private Sub Command2_Click() Dim a, b, c, Alpha, Beta, Gamma As Double a = 10 b = 10 c = 10 Call Angoli(a, b, c, Alpha, Beta, Gamma) End Sub Function ArcCos(X As Double) ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) End Function Function Angoli(a, b, c, Alpha, Beta, Gamma) ' Alpha = lati bc ' beta = Lati ca ' Gamma = lati cb Alpha = ArcCos(b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c) Beta = ArcCos(a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c) Gamma = 180 - Alpha - Beta End Function
__________________
ZENO |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sostanzialmente non c'era niente di sbagliato...in ArcCos... Mancavano delle parentesi nell'argomento passato ad ArcCos che doveva essere comrpeso fra -1 e 1....
Codice:
Private Sub Command2_Click()
Dim a, b, c, Alpha, Beta, Gamma As Double
a = 15
b = 10
c = 10
Call Angoli(a, b, c, Alpha, Beta, Gamma)
End Sub
Function ArcCos(X As Double)
If X = -1 Then
ArcCos = 2 * ArcCos(0) 'ritorno pi greco
ElseIf X = 1 Then
ArcCos = 0
Else
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End If
End Function
Function Angoli(a, b, c, Alpha, Beta, Gamma)
' Alpha = lati bc
' beta = Lati ca
' Gamma = lati cb
pi = 2 * ArcCos(0) 'mi calcolo pi greco
Alpha = ArcCos((b ^ 2 + c ^ 2 - a ^ 2) / (2 * b * c))
Beta = ArcCos((a ^ 2 + c ^ 2 - b ^ 2) / (2 * a * c))
Gamma = pi - Alpha - Beta
MsgBox "Alpha = " & Alpha & " Beta = " & Beta & " Gamma = " & Gamma
End Function
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jun 2001
Città: Roma
Messaggi: 142
|
Ti ringrazio moltissimo !!!!!!! ORa TUTTO FUNZIONA !!!
Un Ultima cosa... in che misura sono espressi i risultati ? mi servirebbero in GRADI come dovrei fare Zeno Visodont ...........
__________________
ZENO Ultima modifica di visodont : 01-06-2004 alle 21:05. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2002
Messaggi: 906
|
per cionci...........
volevo sapere se ArcCos del vb corrisponde alla funzione tan del c++ |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No...tan è tangente... ArcCos è arcocoseno (e non è definita in VB)...
double acos( double x ); è ArcCos in C e C++... tan del C corrisponde a Tan del Vb... |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jun 2001
Città: Roma
Messaggi: 142
|
Coefficiente angolare e VB6
Dovrei calcolare il coefficiente angolare di due rette su un piano, che accludo come esempio nel disegno allegato, per calcolare l' angolo che formerebbero se si incontrassero.
Il quel caso si incontrerebbero fuori dal grafico ma facciamo finta di no. Purtroppo il Visual Basic 6 non ha la funzione Arcotangente che credo serva per questo scopo e credo la si debba derivare in qualche modo ma non so come. Sarebbe possibile avere il codice completo di esempio, con i valori riportati sul disegno e la funzione Arcotangente che funziona ? Un esempio è più chiaro di mille spiegazioni. Grazie mille ancora. Visodont
__________________
ZENO |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:10.



















