Flachy Joe | #1 Posté le 12/11/2015 à 18:56:43 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Salut, j'ai un code "un peu" long (cf l’ascenseur horizontal de cette page)
1
2
3
4
5
6
7
8
9
10
11
| PRIVATE FUNCTION elliptic3(p AS FLOAT, q AS FLOAT, thetaA AS FLOAT, thetaB AS FLOAT, phiA AS FLOAT, phiB AS FLOAT, t AS FLOAT) AS FLOAT DIM dx AS FLOAT, dy AS FLOAT, dz AS FLOAT DIM res AS FLOAT dx = (q * Cos(t * phiB + (1 - t) * phiA) * (- ((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) * (-2 * q ^ 2 * (phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) * Sin(t * phiB + (1 - t) * phiA) * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 - 2 * q ^ 2 * (phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) * Sin(t * phiB + (1 - t) * phiA) * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2)) / (2 * Sgn(q) * Sgn(Cos(t * phiB + (1 - t) * phiA)) * (q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 + q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2) ^ (3 / 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) + ( p * (phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(q) * Sgn(Cos(t * phiB + (1 - t) * phiA)) * sqr \ (q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) - ((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) * ( 'diff(sgn(cos(t*phiB+(1-t)*phiA)),t,1))*(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (sgn(q) * sgn(Cos(t * phiB + (1 - t) * phiA)) ^ 2 * sqr \ (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) *Sin(ACos(((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (sgn(q) * sgn(Cos(t * phiB + (1 - t) * phiA)) * sqr \ (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) +ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB))))) / (sqr \ (1- ((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) ^ 2 *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) ^ 2) / (sgn(q) ^ 2 * sgn(Cos(t * phiB + (1 - t) * phiA)) ^ 2 * (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)) ^ 2)))- q * (phiB - phiA) * Sin(t * phiB + (1 - t) * phiA) * Cos(ACos(((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (sgn(q) * sgn(Cos(t * phiB + (1 - t) * phiA)) * sqr \ (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) +ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)))) dy = - q * (phiB - phiA) * Sin(t * phiB + (1 - t) * phiA) * Sin(ACos(((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(q) * Sgn(Cos(t * phiB + (1 - t) * phiA)) * sqr \ (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) +ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)))) - (q *Cos(t * phiB + (1 - t) * phiA) * (- ((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) * (-2 * q ^ 2 * (phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) * Sin(t * phiB + (1 - t) * phiA) *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 - 2 * q ^ 2 *(phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) * Sin(t * phiB + (1 - t) * phiA) *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2)) / (2 *Sgn(q) * Sgn(Cos(t * phiB + (1 - t) * phiA)) * (q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2) ^ (3 / 2) *Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) + (p * (phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(q) *Sgn(Cos(t * phiB + (1 - t) * phiA)) * sqr \ (q ^ 2 * Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) - ((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) * ( 'diff(sgn(cos(t*phiB+(1-t)*phiA)),t,1))*(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (sgn(q) * sgn(Cos(t * phiB + (1 - t) * phiA)) ^ 2 * sqr \ (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) *Cos(ACos(((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (sgn(q) * sgn(Cos(t * phiB + (1 - t) * phiA)) * sqr \ (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) +ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB))))) / (sgnsqr \ (1- ((((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(t * phiB + (1 - t) * phiA)) ^ 2 *(q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) ^ 2) / (sgn(q) ^ 2 * sgn(Cos(t * phiB + (1 - t) * phiA)) ^ 2 * (q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + q ^ 2 *Cos(t * phiB + (1 - t) * phiA) ^ 2 *(q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) *sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)) ^ 2)) dz = p * (phiB - phiA) * Cos(t * phiB + (1 - t) * phiA) res = Sqr(dx ^ 2 + dy ^ 2 + dz ^ 2) RETURN res END FUNCTION
|
Qui me renvoi un erreur "Expression trop complexe", est-ce que l'un de vous sait quel est la longueur maximale d'une expression ? Ça me permettrai de savoir ou couper ma ligne.
Merci !
PS : oui oui ça se simplifie, mais à la main ça va être juste galère et Maxima me remplis 16Go de RAM et le swap quand je lui demande de simplifier... PPS : Il manque un bout, la ligne dx fait normalement 8497 caractères de long. Flachy Joe |
linuxos | #2 Posté le 13/11/2015 à 05:03:40 |
---|
Un peu de sel, de poivre et la crevette sera... | Bonjour,
Il me semble que tu pourrai découpé ton calcul en plusieurs Variables. Par exemple, chaque variables intermédiaires ferait un partie du long calcul. Cela ne s'implifierai pas l'expression complete mais éviterai d'atteindre les limites.
Exemple (imaginons):
dx = ( (a+b + c)* ..... ) + ((d*e)^2 +5)+....)
Deviendrai:
dxTmp1 = ( (a+b + c)* ..... ) dxTmp2 = ((d*e)^2 +5)+....) dx = dxTmp1 + dxTmp2
C'est une idée comme une autre...
OlivierLorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. |
Flachy Joe | #3 Posté le 13/11/2015 à 10:20:56 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Salut linuxos, merci pour la réponse.
J'y ai songé mais le problème est de savoir quelle est la complexité maximale pour découper au bon endroit ? Flachy Joe |
linuxos | #4 Posté le 14/11/2015 à 17:28:24 |
---|
Un peu de sel, de poivre et la crevette sera... | Flanchy,
Peux tu nous donner le numero de l'erreur que tu as eu stp car dan s la documentation de Gambas il y a un index des erreurs.
Cela pourrait aider pour trouver une réponse.
OlivierLorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. |
Flachy Joe | #5 Posté le 15/11/2015 à 18:24:09 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Je n'ai pas de numéro d'erreur, c'est l'IDE qui me l'envoi dans la bulle rouge. Flachy Joe |
xave4552 | #6 Posté le 1/12/2015 à 22:57:58 |
---|
| Salut, Déjà a quoi sert cette longue formule, n'existe t-il pas un autre algorithme plus simple. Sinon envoie ta formule au complet j'ai maple cela fonctionnera peux être mieux que maxima. ++ |
Flachy Joe | #7 Posté le 2/12/2015 à 21:19:57 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Salut xave4552, C'est une formule de calcul d'un géodésique, la plus courte distance sur un ellipsoïde de révolution.
Il existe des formules approchées (de Vincenty par exemple) mais je voulais voir ce que ça donnait en calcul analytique...
A++
PS: pour info ça passe avec une ligne de 1633 caractères, mais je n'ai toujours pas testé la limite exacte. Je ne sais pas d'ailleurs si ça dépend de la longueur de la ligne ou de l’imbrication de parenthèses.
Flachy Joe |
Flachy Joe | #8 Posté le 2/12/2015 à 22:03:30 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Pour info le code si dessous provoque l'erreur si on rajoute une trois-cent-quarante-et-unième addition.
1
2
3
4
5
| PUBLIC SUB Button2_Click() DIM test AS FLOAT test = 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 Message(test) END
|
L'utilisation de parenthèses ne semble rien changer, et l'utilisation de fonction vaut comme une opération mathématique. On est donc sans doute limité à 340 appels de fonction par ligne Flachy Joe |
vuott | #9 Posté le 2/12/2015 à 22:36:34 |
---|
Ne cedere ineluctabili possimus | Salut, mon ami Flachy Joe,
1) en quel langage de programmation ça calcul geodesico a été écrit en origine?
2) Voir si le fichier gb_limit.h (des sources de Gambas) peut vous aider.
« Vita non suavis esse potest, nec Mors amara. » |
Reivillo | #10 Posté le 2/12/2015 à 23:07:18 |
---|
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Bonsoir @ Toutes & Tous.
@ Flachy Joe. Me serait-ce pas une histoire de dépassement de pile mémoire ( push/pop )! Qui engendre cette erreur? Ton dernier code, tendrai vers ce sens...
Reivillo.1
2
3
4
5
| PUBLIC SUB Button2_Click() DIM test AS FLOAT test = (0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1) + (1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1)'+(1+1....ect) Message(test) END
|
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ.Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3sudo apt-get updatesudo apt-get install gambas3 -yGambas3.8.4-57.47 ( Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR |
Flachy Joe | #11 Posté le 3/12/2015 à 22:40:20 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Hi vuott, J'ai fait le calcul analytique sous wxMaxima, c'est juste une intégrale curviligne dans un repère sphérique mais la courbe est l'intersection d'un plan bien choisi avec l’ellipsoïde.
En réalité mon équation n'est pas utilisable pour le calcul de l'intégrale car elle présente des singularités en Phi=Pi et Phi=-Pi, je m'en suis rendu compte par la suite. C'est dû aux termes en sin(acos(x)).
Merci pour la référence du fichier gb_limit.h, étrangement la limite que j'ai trouvé (340 opérations) ne semble correspondre à aucun des maximums définis...
Salut Reivillo, un dépassement de pile avec 340 références ça me semble bien limité, il faudrait farfouiller dans le code source pour voir d'où ça sort.
Je pense que, de toute façon, il y a peu de chance que cette limite soit bloquante. Quand on tombe dessus, il suffit de découper l'expression incriminée.
Merci pour l’intérêt porté au sujet ! Flachy Joe |
vuott | #12 Posté le 4/12/2015 à 09:31:16 |
---|
Ne cedere ineluctabili possimus | Salut Flachy Joe,
in extremis, tu pourrais utiliser le C pour gérer ce calcul complexe. Le C pourrait peut-être résoudre le problème. ...évidemment je dis de d'intégrer Gambas avec C. « Vita non suavis esse potest, nec Mors amara. » |
Flachy Joe | #13 Posté le 4/12/2015 à 10:30:58 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Une fois coupé en petit morceau, le calcul fonctionne bien :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| PRIVATE FUNCTION elliptic3(p AS FLOAT, q AS FLOAT, thetaA AS FLOAT, thetaB AS FLOAT, phiA AS FLOAT, phiB AS FLOAT, t AS FLOAT) AS FLOAT DIM phi AS FLOAT DIM A AS FLOAT, B AS FLOAT, C AS FLOAT, D AS FLOAT, E AS FLOAT, F AS FLOAT DIM dX AS FLOAT, dY AS FLOAT, dZ AS FLOAT DIM res AS FLOAT phi = t * phiB + (1 - t) * phiA A = - ((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) * (-2 * Cos(phi) * Sin(phi) * q ^ 2 * (phiB - phiA) * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 - 2 * Cos(phi) * Sin(phi) * q ^ 2 * (phiB - phiA) * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2)) / (2 * Sgn(Cos(phi)) * (Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2) ^ (3 / 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) B = (p * Cos(phi) * (phiB - phiA) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(Cos(phi)) * Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) C = (Sin(phi) * Cos(phi) * (phiB - phiA) * (p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) TRY D = Sin(ACos(((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(Cos(phi)) * Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) + ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)))) IF ERROR THEN dX = 0 'peux avoir lieu si D=sin(acos(1)+atan(inf)) dY = 0 ELSE E = Sqr(1 - ((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) ^ 2 * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) ^ 2) / ((Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2))) F = Sin(phi) * q * (phiB - phiA) * Cos(ACos(((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(Cos(phi)) * Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) + ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB))))
dX = Cos(phi) * q * (A + B + C) * D / E - F
A = - Sin(phi) * q * (phiB - phiA) * Sin(ACos(((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(Cos(phi)) * Sgn(q) * Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) + ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)))) B = - ((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) * (-2 * Cos(phi) * Sin(phi) * q ^ 2 * (phiB - phiA) * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 - 2 * Cos(phi) * Sin(phi) * q ^ 2 * (phiB - phiA) * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2)) / (2 * Sgn(Cos(phi)) * (Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2) ^ (3 / 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) C = (p * Cos(phi) * (phiB - phiA) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(Cos(phi)) * Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) D = (Sin(phi) * (Cos(phi)) * (phiB - phiA) * (p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA))) E = Cos(ACos(((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB))) / (Sgn(Cos(phi)) * Sqr(Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2) * Sgn(q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA)))) + ATan((q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) / (q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)))) F = Sqr(1 - ((p * Sin(phi) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) ^ 2 * (q ^ 2 * Cos(phiA) * Cos(phiB) * Cos(thetaA) * Sin(thetaB) - q ^ 2 * Cos(phiA) * Cos(phiB) * Sin(thetaA) * Cos(thetaB)) ^ 2) / ((Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiA) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiB)) * Sin(thetaA) - q * Cos(phiB) * (p * Sin(phiA) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Sin(thetaB)) ^ 2 + Cos(phi) ^ 2 * q ^ 2 * (q * Cos(phiB) * (((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p) + p * Sin(phiA)) * Cos(thetaB) - q * Cos(phiA) * (p * Sin(phiB) + ((q ^ 2 - p ^ 2) * Sin(phiA) + (q ^ 2 - p ^ 2) * Sin(phiB)) / (2 * p)) * Cos(thetaA)) ^ 2)))
dY = A - Cos(phi) * q * (B + C + D) * E / F ENDIF dZ = p * (phiB - phiA) * Cos(phi) res = Sqr(dX ^ 2 + dY ^ 2 + dZ ^ 2) RETURN res END FUNCTION
|
Il faut juste que je revois ma paramétrisation car theta = f(phi) a 2 solutions (puisque c'est une ellipse fermée) et il faut la parcourir dans le bon sens.
Flachy Joe |
Reivillo | #14 Posté le 4/12/2015 à 17:33:46 |
---|
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | @ Flachy Joe.
un dépassement de pile avec 340 références ça me semble bien limité, il faudrait farfouiller dans le code source pour voir d'où ça sort. Ma remarque, était au niveau de de la Pile du processeur arithmétique. Tu auras autant d'accumulateur temporaire d'ouvert, que de parenthèse ouvrante non fermée. D'où dans la nécessite de découper l'expression. Donc, avec toutes les parenthèses ouvrantes refermées, il n'y reste plus qu'un accumulateur temporaire d'ouvert.
Puis en découpant, c'est quand même plus digeste, voir lisible... Ce que tu as d'ailleurs fait, à la vu de ton dernier message.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ.Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3sudo apt-get updatesudo apt-get install gambas3 -yGambas3.8.4-57.47 ( Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR |
Flachy Joe | #15 Posté le 4/12/2015 à 19:21:05 |
---|
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Reivillo : les parenthèses ne changes rien dans la limite des 340 opérations : si dans la ligne de test avec les additions tu rajoutes des parenthèses, ça passe encore. D'après gambas-code/main/share/gb_limit.h je comprend qu'on a droit à 255 niveaux de parenthèses :
/* Maximum level of expression imbrication */ #define MAX_EXPR_LEVEL 255
/* Maximum number of patterns in an expression - CANNOT CHANGE */ #define MAX_EXPR_PATTERN 1023
Ce nombre maximum de motifs a peut être à voir avec la limite rencontrée mais faudrait avoir la définition de "motif"... Flachy Joe |