papounez
Messages postés118Date d'inscriptionsamedi 16 juillet 2005StatutMembreDernière intervention18 novembre 2008
-
4 août 2005 à 23:07
papounez
Messages postés118Date d'inscriptionsamedi 16 juillet 2005StatutMembreDernière intervention18 novembre 2008
-
5 août 2005 à 13:16
Bonjour!
comment peut on faire pour etre sur a la derniere
boucle exacte
exemple:
calcule l'angle du pas
x = Pas / 2 / (Rp - Ro)
Arcsin = Atn(x / Sqr(-x * x + 1)) * 2
m = Round(Arcsin, 9) 'angle du pas en RADIAN
a = m * 1 / (3.1415926 / 180) 'angle du pas en DEGRE
'===================================================== 'calcule Angle depard et Arrivée If Cxr < Rp Then
x = Cxr / Rp
Arccos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
End If
Ad = 3.1415926 + Arccos
Ar = (3.1415926 * 2) - Arccos
'===================================================== 'Calcule pas corrigée If i = 0 Then 'Calcule le pas corrigée 1 fois
Ac = Int((Ar - Ad) / m)
Ac1 = Round((Ar - Ad) / Ac, 6)
End If
voila mon probleme si x + Ac1
il me manque le point Ar
For x = Ad To Ar Step Ac1
MrdJack
Messages postés146Date d'inscriptionjeudi 22 avril 2004StatutMembreDernière intervention 8 mars 20082 5 août 2005 à 02:07
Le probleme rencontré est si je ne m'abuse a cause du pas choisit dans ta boucle FOR :
Une boucle for utilisée avec un pas STEP va incrémenter de la valeur du pas ta variable x a chaque lecture de la boucle.
ainsi, tu vas commencer à Ad puis va incrémenter de ton pas pour
devenir Ad+pas puis va réincrémenter de pas pour devenir Ad
+2*pas etc..... jusqu'a ce que ta valeur de x soit égale a Ar
bon je sais jusque là je t'apprends rien de bien nouveau....
mais la subtilité réside dans le fait que ta valeur de x n'ateindra jamais la valeur de Ar sauf dans un seul cas, lorsque Ar = Ad + n*pas
donc pour résumer, si le pas dépasse la valeur de Ar, le for s'arrete sans exécuter avec cette valeur Ar.
le mieux à faire pour ton probleme, serait de faire après ton for une
condition qui teste si x est égal a Ar (la dernière valeur de x reste
en mémoire normalement et si ce n'est pas le cas, tu refais un
traitement avec x=Ar (la derniere condition est là pour éviter
que tu ne refasses deux fois le même calcul)
ou sinon, si tu a la possibilité d'aller plus loin, c'est tout
simplement de réajuster avant le FOR la valeur de Ar pour que le pas
tombe dessus.
en espérant t'avoir aidé, je te souhaite une bonne nuit.
papounez
Messages postés118Date d'inscriptionsamedi 16 juillet 2005StatutMembreDernière intervention18 novembre 2008 5 août 2005 à 11:00
bonjour! et merci
oui apres la boucle je test le le (x)
If x < Ar Then
x = Ar
ici aucun changement
=====================
et la c'est bon
If x <> Ar Then
x = Ar
il le calcule 2 fois
donc comment faire , j' ai recalculer le
Ac = Int((Ar - Ad) / m)
Ac1 = Round((Ar - Ad) / Ac, 6)
mais ca ne fais rien
merci
Rp = Val(O_RayPiece(i).Text)
Ro = Val(O_RayOutil(i).Text)
Pas = Val(O_Pas(i).Text)
Cxr = Val(O_CoteXR(i).Text)
AngC = Val(O_AngCoupe(i).Text)
AngP = Val(O_AngProjection(i).Text)
Dx = Val(O_DecaX(i).Text)
Dy = Val(O_DecaY(i).Text)
Dz = Val(O_DecaZ(i).Text)
If Rp 0 Or Ro 0 Or Pas = 0 Then
MsgBox " Un des Arguments ci-dessous est égale a Zéro " + vbLf + _
" De la colonne Dépard ou Arrivée" + vbCrLf + vbCr + _
" - Rayon de la Pièce" + vbLf + _
" - Rayon de l'Outil" + vbLf + _
" - Pas", (vbCritical)
Exit Sub
Else
'===================================================== 'calcule l'angle du pas x = Pas / 2 / (Rp - Ro)
'Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Arcsin = Atn(x / Sqr(-x * x + 1)) * 2
m = Arcsin 'angle du pas en RADIAN
a = m * 1 / (3.1415926 / 180) 'angle du pas en DEGRE
'===================================================== 'calcule Angle depard et Arrivée ' Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
If Cxr < Rp Then
x = Cxr / Rp
Arccos = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
End If
Ad = 3.1415926 + Arccos
Ar = (3.1415926 * 2) - Arccos
'===================================================== 'Calcule pas corrigée If i = 0 Then 'Calcule le pas corrigée 1 fois
Ac = Int((Ar - Ad) / m)
Ac1 = (Ar - Ad) / Ac
End If
'===================================================== 'Calcul de X Y Z 'en fontion de Angle Coupe et Projection R = Rp - Ro
Ac = AngC * (3.1415926 / 180) 'conversion angle de coupe en Radian
Ap = AngP * (3.1415926 / 180) 'conversion angle de projection en Radian