# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  homothtie de forme

## saturn1

Bonjour, je ralise une homothtie.


```

```

Ce que je souhaite raliser est une dilatation de slection comme les logiciels graphiques le font.
Le problme avec ce code c'est que la forme dilat peut avoir tendance  venir rentrer dans la forme initiale lorsqu'il il y a un changement de courbure brusque.

Comment palier  ce problme?

Merci de votre aide.

----------


## souviron34

D'abord tu calcules ton facteur (qui doit tre > 1 si tu dilates)Ensuite, pour chaque point, tu appliques le facteur au vecteur (barycentre, point).

a ne devrait jamais rentrer..

----------


## saturn1

Je ne comprend pas cela fait maintenant 1 jour que je suis sur ce petit problme...

Voici un exemple du cas problmatique:



Et pourtant il ne me semble pas m'tre tromp dans le code.

Merci encore!

----------


## souviron34

quand le lis ton code, j'ai un peu de mal..

-30 c'est quoi ???

moi je ferais :

dx = x - xbary
dy = y - ybary

newx = xbary + dx * facteur
newy = ybary + dy * facteur

----------


## saturn1

Salut, oui merci j'avais corrig en fonction de ton premier post.

En faite cela ne rentre pas si on met des valeurs k assez grande (2 par exemple).
Mais si on veut raliser un grossissement plus fin ca ne marche pas lorsque la courbe va vers l'intrieur puis l'exterieur.

Merci,

----------


## souviron34

comment calcules-tu le barycentre ??

----------


## souviron34

> Mais si on veut raliser un grossissement plus fin ca ne marche pas lorsque la courbe va vers l'intrieur puis l'exterieur.


 ::calim2:: 

peux-tu expliquer ???

du genre 1.01 par exemple ???

Tu es bien toujours > 1 ?


Montre-voir ton vrai code...

----------


## saturn1

Salut je vais me renseigner, pour calculer le barycentre(les maths sont dja loin^^). Je calcule la moyenne pondre des points.



```

```

----------


## souviron34

tous tes var (et (length) sont bien en rels ??

----------


## saturn1

Salut, oui!



```

```

Voici le resultat:

----------


## souviron34

pourquoi divises-tu dirx et diry par len ???????


DELTA X = X - XBARY

NEW X = XBARY + DELTA  * Facteur

----------


## saturn1

Salut, dsol cette ligne est commente mais j'ai oubli de la retire dans le code post.

Je pense effectivement que la technique employe n'est pas la bonne, je me suis peut tre mal exprim dans ce que je veux faire.

Mais je pense plus tre du ct d'un polygone offset.(je viens de trouver).
Du coup il faut que je repense mon algo.

----------


## pseudocode

> Voici le resultat:


C'est normal que les 2 polygones se chevauchent, si c'est ce que tu cherches  nous dire.

Suivant la position du centre de l'homothtie, le dplacement de la nouvelle forme peut intersecter la premire:


Si tu cherches a "tendre" une slection, je te suggre plutot l'approche morphologique (cf erosion/dilatation).

----------


## souviron34

> Salut, dsol cette ligne est commente mais j'ai oubli de la retire dans le code post.
> 
> Je pense effectivement que la technique employe n'est pas la bonne, je me suis peut tre mal exprim dans ce que je veux faire.
> 
> Mais je pense plus tre du ct d'un polygone offset.(je viens de trouver).
> Du coup il faut que je repense mon algo.


Pourrait-on avoir sous forme de fichier  x y ton polygone initial stp ?

----------


## saturn1

Bonjour, oui je vais l'envoyer des que possible.

Mais comme l'a expliquer pseudocode, le probleme vient du centre de l'homethetie.(donc le barycentre).

----------

