PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Fonction en C++  aide pour conversion en wlangage
Fonction en C++ aide pour conversion en wlangage
Débuté par stef, 26 avr. 2007 18:49 - 5 réponses
Posté le 26 avril 2007 - 18:49
Bonjour j'ai besoin d'un coup de main, pour convertir une fonction d'une 10 de lignes en C++ (calcul) en wlanguage....

il y a t il un quelqu un qui à des connaissance en C++ et qui a 5mn ?

merci
Stef
Posté le 26 avril 2007 - 19:11
Bonsoir
envoie sur le forum on verra bien ce ke l'on peut faire pour toi
"stef" <s.brackez@atp01.com> a écrit dans le message de news:
4630bbab$1@news.pcsoft.fr...

Bonjour j'ai besoin d'un coup de main, pour convertir une fonction d'une
10 de lignes en C++ (calcul) en wlanguage....

il y a t il un quelqu un qui à des connaissance en C++ et qui a 5mn ?

merci
Stef
Posté le 26 avril 2007 - 19:21
Poste ta fonction, tu auras certainement des propositions ;)

eric l.

> stef a écrit :
Bonjour j'ai besoin d'un coup de main, pour convertir une fonction d'une 10 de lignes en C++ (calcul) en wlanguage....

il y a t il un quelqu un qui à des connaissance en C++ et qui a 5mn ?

merci
Stef
Posté le 27 avril 2007 - 08:28
bon c'est sympa ;) voici la fonction "WorldDegreeToMeters" le calcul n'a pas l'air compliqué mais j'ai du mal à suivre la syntaxe du C++ .Merci
===============================================
void WorldDegreeToMeters ( LONGPOSITION &DegreeCoord )
{
DOUBLE dActualLongtitude = DegreeCoord.lX / 100000.0;
DOUBLE dActualLatitude = DegreeCoord.lY / 100000.0;


DOUBLE dWorkLongtitude = 0;
DOUBLE dWorkLatitude = dActualLatitude;

dActualLongtitude /= 57.3;
dActualLatitude /= 57.3;

dWorkLongtitude /= 57.3;
dWorkLatitude /= 57.3;

DOUBLE dDistance = acos( sin( dActualLatitude ) * sin( dWorkLatitude ) +
cos( dActualLatitude ) * cos( dWorkLatitude ) *
cos( dActualLongtitude - dWorkLongtitude ) );

dDistance *= 3437.7387;
dDistance *= 1852;

DegreeCoord.lX = ( LONG )( dActualLongtitude > 0 ? dDistance : ( dDistance * -1 ) );

dWorkLongtitude = dActualLongtitude;
dWorkLatitude = 0;

dDistance = acos( sin( dActualLatitude ) * sin( dWorkLatitude ) +
cos( dActualLatitude ) * cos( dWorkLatitude ) *
cos( dActualLongtitude - dWorkLongtitude ) );

dDistance *= 3437.7387;
dDistance *= 1852;

DegreeCoord.lY = ( LONG )( dActualLatitude > 0 ? dDistance : ( dDistance * -1 ) );
}
Posté le 27 avril 2007 - 12:04
A la louche ca etre ca...

Je présume que tu dois avoir qq chose de la sorte pour LONGPOSITION

struct LONGPOSITION
{
long lx;
long ly;
};

->

LONGPOSITION est structure
lx est entier
ly est entier
fin

Pour mémo, les fonctions cos/sin et cie du C prennent des radians en
parametre celles de windev des degrés.

// -----

fonction RadianVersDegre(Val)

renvoyer Conversion(Val,"radian","degré)

// -----

procedure WorldDegreeToMeters(DegreeCoord est LONGPOSITION)

dActualLongtitude est reel sur 8 = DegreeCoord:lX / 100000
dActualLatitude est reel sur 8 = DegreeCoord:lY / 100000

dWorkLongtitudee st reel sur 8 = 0
dWorkLatitude est reel sur 8 = dActualLatitude

dActualLongtitude = dActualLongtitude / 57.3
dActualLatitude = dActualLatitude / 57.3

dWorkLongtitude = dWorkLongtitude / 57.3
dWorkLatitude = dWorkLatitude / 57.3

dDistance est reel sur 8 =
ArcCosinus(Sinus(RadianVersDegre(dActualLatitude)) *
Sinus(RadianVersDegre(dWorkLatitude)) +
Cosinus(RadianVersDegre(dActualLatitude)) *
Cosinus(RadianVersDegre(dWorkLatitude)) *
Cosinus(RadianVersDegre(dActualLongtitude - dWorkLongtitude)))

dDistance = dDistance * 3437.7387
dDistance = dDistance * 1852

DegreeCoord.lX = dActualLongtitude > 0 ? dDistance sinon dDistance * -1

dWorkLongtitude = dActualLongtitude
dWorkLatitude = 0

dDistance = ArcCosinus(Sinus(RadianVersDegre(dActualLatitude)) *
Sinus(RadianVersDegre(dWorkLatitude)) +
Cosinus(RadianVersDegre(dActualLatitude)) *
Cosinus(RadianVersDegre(dWorkLatitude)) *
Cosinus(RadianVersDegre(dActualLongtitude - dWorkLongtitude)))

dDistance = dDistance * 3437.7387
dDistance = dDistance * 1852

DegreeCoord.lY = dActualLatitude > 0 ? dDistance sinon dDistance * -1

// -----

bon dev
eric l.

> stef a écrit :
bon c'est sympa ;) voici la fonction "WorldDegreeToMeters" le calcul n'a pas l'air compliqué mais j'ai du mal à suivre la syntaxe du C++ .Merci
===============================================
void WorldDegreeToMeters ( LONGPOSITION &DegreeCoord )
{
DOUBLE dActualLongtitude = DegreeCoord.lX / 100000.0;
DOUBLE dActualLatitude = DegreeCoord.lY / 100000.0;


DOUBLE dWorkLongtitude = 0;
DOUBLE dWorkLatitude = dActualLatitude;

dActualLongtitude /= 57.3;
dActualLatitude /= 57.3;

dWorkLongtitude /= 57.3;
dWorkLatitude /= 57.3;

DOUBLE dDistance = acos( sin( dActualLatitude ) * sin( dWorkLatitude ) +
cos( dActualLatitude ) * cos( dWorkLatitude ) *
cos( dActualLongtitude - dWorkLongtitude ) );

dDistance *= 3437.7387;
dDistance *= 1852;

DegreeCoord.lX = ( LONG )( dActualLongtitude > 0 ? dDistance : ( dDistance * -1 ) );

dWorkLongtitude = dActualLongtitude;
dWorkLatitude = 0;

dDistance = acos( sin( dActualLatitude ) * sin( dWorkLatitude ) +
cos( dActualLatitude ) * cos( dWorkLatitude ) *
cos( dActualLongtitude - dWorkLongtitude ) );

dDistance *= 3437.7387;
dDistance *= 1852;

DegreeCoord.lY = ( LONG )( dActualLatitude > 0 ? dDistance : ( dDistance * -1 ) );
}

Posté le 27 avril 2007 - 14:55
Merci Eric, tip top configuration ;)