Calcul de surface [Résolu]

imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 27 mars 2007 à 22:04 - Dernière réponse : imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention
- 28 avril 2007 à 13:04
Bonsoir a tout le monde,
Sur mon projet je cree un dessin dans un picturebox avec des lignes
Tous perdendicullaire ou parralelle,
Mon probleme c'est que je desire calculer la surface du dessin que j'ai fait, sachant que j'ai dessiner les lignes par exemple, 200cm=200pixels

Merci d'avance
Afficher la suite 

Votre réponse

20 réponses

rodymary 5 Messages postés jeudi 10 juin 2004Date d'inscription 22 mars 2010 Dernière intervention - 27 avril 2007 à 14:42
+3
Utile
salut
ta forme est en fait un polygone constitué de points x,y
utilises l'ago suivant et ça marchera au poil !
a+

Private Type coord
  x As Double
  y As Double
End Type
Dim pt() As coord

Private Sub Form_Load()
  ReDim pt(5)  pt(1).x 10: pt(1).y 20  pt(2).x 40: pt(2).y 20  pt(3).x 20: pt(3).y 40  pt(4).x 20: pt(4).y 50  pt(5).x 10: pt(5).y 50
  MsgBox surface(pt)
End Sub

Private Function surface(pt() As coord) As Double
  Dim p As Long
  For p = 1 To UBound(pt) - 1
    surface = surface + (0.5 * (pt(p).x * pt(p + 1).y - pt(p + 1).x * pt(p).y))
  Next
  surface = surface + (0.5 * (pt(p).x * pt(1).y - pt(1).x * pt(p).y))
End Function
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de rodymary
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 27 mars 2007 à 22:25
0
Utile
Bonsoir,

- La surface d'une figure constituée de "lignes parallèles", ma foi... je ne vois pas vraiment (je ne "sens" pas la chose...)
- celle d'une figure constituée de "parralèles et de perpendiculaires ? Ah, voilà qui est déjà moins mal, mais à condition qu'il y ait au moins 2 parrallèles et 2 perpendiculaires...
- si nous sommes dans ce cas (au moins 2 parrallèles et 2 perpendiculaires) : calcul fort simple si les parrallèles sont horizontales et les perpendiculaires verticales... un peu plus complexe si le tout s'en va en oblique... mais pas insurmontable.

Tout celà manque de précisions, certes, mais, de quoi s'agit-il en fait, sinon d'algèbre analytique pure , avant même de passer au code ?
Il faut, si tu prends cette voir, commencer à mettre tes droites (droites, s'il te plait, et non lignes) en équation (une équation de type y = ax + b par droite.
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 27 mars 2007 à 22:34
0
Utile
Ah oyu...
Ol manque encire une précision qui changerait tout, y compris ce que j'ai dit plus haut (qui ne concernerait que les surfaces "closes") :
S'il s'agit le la surface d'occupation minimum de la pictureBox par des lignes (c'est à dire la surface du polygine qui rejoindrait les "pointes" extrêmes, c'est encore autre chose !... bien évidemment...
Alors ?
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 27 mars 2007 à 22:37
0
Utile
Je suis un âne...
Dans la seconde hypothèse, on ne parlerait alors ni de "lignes", ni de "droites", mais forcément, alors, de segments.
Tu mesures maintenant l'imprécision de ta question ?
Commenter la réponse de jmfmarques
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 28 mars 2007 à 05:52
0
Utile
Bonjour,
Je trouves tout cela fort compliqué,
Je vais essayer plus simplement.
Je dessin une piece a l'aide de droite, ou polylignes,
la forme de ma piece est un T, dont je connais les dimensions
Et je voudrais simplement calculer sa surface
Merci
Commenter la réponse de imgKappa
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 mars 2007 à 08:11
0
Utile
Bonjour,

Si tu veux dire que ton dessin en forme de T est finalement composé de deux rectangles (l'un horizontal et l'autre vertical), je ne vois pas où est ton problème :

La surface totale étant égale à l'addition des 2 surface, chacune d'entre elles étant in ne peut plus facile à calculer puisqu'égale ç la largeur multopliée par la hauteur !
Or, dis-tu, c'est toi qui désssines et tu connais donc, par construction, ces dimensions....
Pour le reste (surface représentée par rapport à la surface réelle en fonction de l'échelle), je ne vois pas non plus où est le problème ! Il te suffit de stocker dans une variable, au moment de la construction et avant calcul de la surface, la valeur en correspondance avec l'échelle ! Pire : puisque tu dessines la pièce à l'échelle, tu en  connais les dimensions réelles d'avance ! C'est donc plutôt son dessin, que tu mets à l'échelle !!!!

Là, vraiment... si tu n'y parviens pas en développement, c'est que tu n'y parviendrais pas non plus avec une feuille de papier, un crayon et un double décimètre !
Commenter la réponse de jmfmarques
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 28 mars 2007 à 14:18
0
Utile
Salut jmfmarques,
On ne sait pas compris,
je sais comment calculer cet surface, je suis stupide mais pas a ce point,
Pour construire le dessin, je saisie les longueur A,B,....
Et j'obtiens un dessin qui resemble a celui-la,
Mais cela pourrais etre en forme de L ou de n'inporte quoi,
Ce que je cherche c'est comme faire calculer le programme,
Je sais bien que c'est la somme des deux surface rectangulaire,
Pour le calcul de primetre pas de probleme
Un peu comme Autocad, ou autre programme de CAO,
Commenter la réponse de imgKappa
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 28 mars 2007 à 14:41
0
Utile
Salut,

Mai, en effet on ne "sait" pas compris (tiens !...),
L'essaentiel n'étant pas de de "savoir" compris, mais de s'"être" compris, comme on ne "s'est" apparemment pas compris,
je suggère une chose :
Ton code pour dessiner, ici !
D'autant que lorsque tu écris :
"Pour construire le dessin, je saisie les longueur A,B,...."
Moi, vois-tu, il y a beaucoup de choses que je ne saisis pas,
à commencer par le fait que si tu saisis les longueurs A et B, tu connais donc les longueurs ! et la surface est leur produit !...
Alors : ton code s'il te plait ! (commenté, s'il te plait) !
Commenter la réponse de jmfmarques
cs_Nicko11 1141 Messages postés mercredi 7 mars 2007Date d'inscription 19 septembre 2007 Dernière intervention - 28 mars 2007 à 15:49
0
Utile
Comprend bien que tu n'obtiendras rien de mieux tant que tu ne nous auras pas decrit clairement et en DETAILS ce que tu fait et ce que ton programme fait. On se doute que tu sais calculer une surface (meme si on parle de surface un contour fermé).

Essaie tu de dire que lorsque tu dessine une figure, tu souhaite connaitre la surface du rectangle surconscrit (celui qui a pour longueur, la longueur max de ta figure et pour largeur, la largeur max de ta figure. Car un T ou un L ne peut pas representer une surface.

Si tu parviens egalement a essayer de faire un bout de code par toi meme, je pense que les profs d'ici te resoudront ton pb en 2 secondes. Essaie de bien cibler ton pb au lieu de nous dire un truc trop vague.
Commenter la réponse de cs_Nicko11
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 29 mars 2007 à 18:59
0
Utile
Ok voici un bout de code de la maniere que je construit la piece
Private Sub Command1_Click()
   Picture1.Line (10, 10)-(10, 100)
   Picture1.Line (10, 100)-(100, 100)
   Picture1.Line (100, 100)-(100, 150)
   Picture1.Line (100, 150)-(150, 150)
   Picture1.Line (150, 150)-(150, 10)
   Picture1.Line (150, 10)-(10, 10)
End Sub

et c'est a partir de la que je cherche comment calculer la surface
Commenter la réponse de imgKappa
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 29 mars 2007 à 20:40
0
Utile
Bonsoir imgKappa,

Je vais te confesser une chose : quand j'ai vu le code que tu nous "jetais" là, avec des chiffres uniquement, dont sans même d'autres notions, j'ai failli ne jamais répondre tellement on s'écarte là de l'esprit informatique !...

J'ai changé d'avis en prenant mon repas !

Tu aimes travailler avec des chiffres, sans te référer à d'autres notions ?
Bien !
Je vais en faire autant, alors !

voilà ta surface, donc :

Private Sub Command1_Click()
   Picture1.Line (10, 10)-(10, 100)
   Picture1.Line (10, 100)-(100, 100)
   Picture1.Line (100, 100)-(100, 150)
   Picture1.Line (100, 150)-(150, 150)
   Picture1.Line (150, 150)-(150, 10)
   Picture1.Line (150, 10)-(10, 10)
   surface = ((150 - 10) * (150 - 10)) - ((100 - 10) * (150 - 100))
   MsgBox surface
End Sub

Il est clair que si tu veux avoir la surface réelle, pas celle en unités logiques,  il te faut diviser chacun de ces chiffres par ton échelle de représentation.

Il est également clair que, si tu veux une façon "universelle" de calculer cette surface, il va te falloir accepter de procéder d'une façon également universelle pour ce qui est de la définition des segments utilisés. Le vrai problème, pour toi (et ce sera là ton vrai treavail d'étude) sera la mise en oeuvre, avant même de parler de calcul de surface, d'une méthode de définition et de référence à ces segments...
Il s'agira, dans ce choix, plus d'une démarche de la pensée que de quoi que ce soit (y compris le code) d'autre...
C'est à ce seul prix que tu pourras aborder ton problème de façon compatible avec un développement informatique.

Bon travail, donc.
Commenter la réponse de jmfmarques
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 29 mars 2007 à 20:49
0
Utile
Ce n'est pas que j'aime les chiffres sans me référer à d'autres notions,
Je sais faire comme ça.
Maintenant si il existe une autre mainieres de faire je suis pres a aprendre, mais je ne connais pas.
Donne moi une info ou une idée que je puisse cherher,
Commenter la réponse de imgKappa
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 31 mars 2007 à 07:36
0
Utile
Bonjour,

Bon...
De quoi t'occuper ce weel-end alors ...

Tu as remarqué que t'étant contenté d'akigner des chiffres, tu as reçu une réponse à l'aide de seuls chiffres, ce qui va bien si tu n'as qu'une seule surface (celle-là) à calculer, mais ne t'aide certes pas au calcul de surfaces diverses puisque la réponse (comme la question) n'aligne que des chiffres.
Je suppose que tu attendais plutôt une méthode (formule) de calcul par référence à des... références précisément, ce qu'il est bien évidemment toujours possible de faire (fort heureusement) à condition toutefois que ces "références" soient parfaitement établies. C'est ainsi que l'on développe, en général, lorsque l'on veut atteindre un but dans plusieurs cas de figure.

Je n'ai pas ici l'intention de faire ton projet à ta place.

Je peux (et c'est ce que je fais donc) par contre t'orienter et te laisser travailler dans ce sens après t'être intéressé à certaines notions et t'y être exercé.

Intéresse-toi donc (vois celà dans ton aide en ligne) à la notion de structure, que tu trouveras dans ton aide en ligne avec le mot structure, mais également avec le mot Type (statement ou instruction). Tu découvriras qu'une structure se déclare et qu'elle contient des éléments. Une structure UNPOINT représentant un point, par exemple, contiendrait 2 éléments : l'abscisse du point et l'ordonnée du point. Une structure UNRECTANGLE, représentant un rectangle, contiendrait 4 éléments (abscisse et ordonnée du coin supérieur gauche et abscisse et ordonnée du coin inférieur droit). Une structure UNELIGNE, représentant une ligne, ressemblerait à celle d'un rectangle, à la différence près que l'ordonnée du coin inférieur droit serait égale à celle du coin supérieur gauche.

Tu as là (je t'ai mis sur la voie) les éléments principaux qui doivent conduire ta réflexion d'abord... ton raisonnement ensuite .. et enfin ton code.
A toi, également, de définir ta stratégie, en fonction de ton but et de choisir la/les structure(s) (point, ligne ou rectangle) qui te praîtra/ont la/les plus adaptée(s) à ce que tu veux faire.
Bonne étude.
Commenter la réponse de jmfmarques
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 31 mars 2007 à 08:41
0
Utile
Ok j'ai regardé, mais je ne vois pas comment cela peut fonctionner
enfin merci de ton aide
Commenter la réponse de imgKappa
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 31 mars 2007 à 09:13
0
Utile
Non désolé, J'ai beau retourner le probleme dans tous les sens je ne vois pasce que je peus avec ces structures,

Je construit ma forme géometrique a l'aide de segment de droite et uniquement
je lui donne une longueur, puis une direction

Private Sub Command1_Click()
'Ligne verticale vers le bas Y+
DesX = OldX      'Determination du Point X2
DesY = OldY + Val(Text1.Text)      'Calcul du Point Y2
Picture1.Line (OldX, OldY)-(DesX, DesY)         'Trace la ligneOldX DesX: OldY DesY         'Les X2 et Y2 devient les nouveau Point X1,Y1 pour la prochaine ligne
End Sub
Commenter la réponse de imgKappa
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 31 mars 2007 à 09:39
0
Utile
Je ne peux que te dire une chose : à procéder aussi simplement, tu ne parviendrais à établir une "formule générale" qu'au prix de très longues boucles "dans tous les sens" et ce serait une véritable usine à gaz.

Alors : 

1)  si c'est juste un petit projet personnel : ou tu t'intéresses à ce que je t'ai dit et tu continues, ou tu ne veux pas te lancer dans cette direction car tu n'en "vois" pas l'utilisation et alors tu te contentes de jouer avec Word pour faire tes plans, les regarder (examen visuel) et en calculer la surface en additionnant ou soustrayant des surfaces de rectangles par examen visuel et en utilisant les longueurs affichées par Word pour chaque segment

2) si c'est par contre un exercice qui t'est imposé : celui qui te l'a imposé attend précisément de toi que tu utilises les structures et tu n'y échapperas donc pas. Cet exercice ne t'aurait dans ce cas été imposé que dans le but, précisément, de vérifier tes capacités personnelles à organiser une stratégie d'utilisation des méthodes auxquelles je t'ai demandé de t'intéresser. Le faire à ta place serait alors sans aucun doute violer l'esprit même d'un exercice imposé ! Je ne vois par ailleurs pas comment, sans faire moi même la partie très précisément essentielle de cet exercice, t'en dire plus que ce que je t'ai dit... Il te faut donc nécessairement, à ce niveau, prendre ta tête entre deux mains, te concentrer et voir comment t'en servir adroitement (c'est très précisément cette capacité d'approche que ton notateur éventuel souhaite pouvoir juger) . Désolé.

Bon courage
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 31 mars 2007 à 11:23
0
Utile
Ceci étant, il existe peut-être une solution moins complexe pour toi, si tes figures ne sont pas trop complexe.
Cette solution passerait par une leste des abscisses et une liste des ordonnées.
geste 1 alors (et il est facile, dès lors) : détermination des coordonnées du rectangle le plus petit mais capable d'englober l'ensemble (ne me demande pas par quel procédé, hein... ultra-simple lorsque tu as les 2 listes)
geste 2 : recenser toutes les abscisses de valeur supérieure à celle du coin supérieur gauche et inférieure à celle du coin inférieur droit
geste 3 :  recenser toutes les ordonnées de valeur supérieure à celle du coin supérieur gauche et inférieure à celle du coin inférieur droit

Si tu ne vois pas là non plus l'astuce à mettre en oeuvre après ces 3 gestes, je desespèrerais de te réveiller et t'abandonnerais là
(prends une feuille de papier et un crayon ... dessine... et tu devrais comprendre le truc en regardant bien ton dessin et en relisant attentivement ce que je viens d'écrire)
Commenter la réponse de jmfmarques
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 1 avril 2007 à 08:55
0
Utile
Pour repondre au sujet, "si c'est par contre un exercice qui t'est imposé ", non
Je cherche a developer quelque chose,, maintenant je vois pas du tout, je comprends comprends les fonctions des structures


mais je ne vois pas comment,


par exemple je prend un rectangle il peut-etre en ajout a ma surface, mais il peut-etre aussi en retrait
puis il ya le recouvrement des rectangles
donc je vais faire avec word ou une feuille et un crayon
Commenter la réponse de imgKappa
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 1 avril 2007 à 10:52
0
Utile
Bon...

Il est po1pur moi maintenant (après tout ce que je t'ai déjà exposé) manifeste qu'avant même d'avoir des difficultés de type développement informatique, tu en as de très sérieuses en matière de "vision" géométrique.
Voyons donc (bien que ce forum n'ait pas cet enseignement pour vocation !..) :
1) tu ne traces que des segments horizontaux et verticaux.
2) une fois terminée, ta figure est "inscriptible" dans un rectangle "englobant" dont la largeur LT estr égale à la différence entre l'abscisse la plus grande et l'abscisse la plus petite de ta "collection" de points et dont la hauteur HT est égale à la différence entre l'ordonnée la plus grande et l'ordonnée la plus petite de ta collection de ponts.
3) A chaque tracé d'un segment horizontal  : tu ajoutes ou retranches la surface d'un rectangle ayant pour largeur la longueur de ton segment et pour hauteur la différence entre HT et l'ordonnée de son segment. Ajout si l'abscisse finale est supérieure à celle d'origine de ton segment, soustraction dans le cas contraire
4)  A chaque tracé d'un segment vertical  : tu ajoutes ou retranches la surface d'un rectangle ayant pour hauteur la longueur de ton segment et pour laregeur la différence entre LT et l'abscisse de son segment. Ajout si l'ordonnée finale est supérieure à celle d'origine de ton segment, soustraction dans le cas contraire.

Et le jeu de ces ajouts et soustractions successives te conduira TOUJOURS à un résultat final exact, pour des raisons évidentes (une opération intermédiaire étant toujours, inévitablement, corrigée par cette méthode par une opération venant ensuite)

J'espère que tu as compris ce raisonnement, qui n'est pas ésotérique.

Sa mise en oeuvre, maintenant, sera moins pratique sans organisation et beaucoup plus avec organisation.
Cette organisation peut utiliser des structuères, des collections, ... etc... (même un tableau dynamique pourrait faire l'affaire)
Avec quoi travailles-tu donc, en fait ? avec des vecteurs successifs, dont chacun va dans une direction perpendiculaire au vecteur qui le précède, c'est tout...(un vicieux penserait immédiatement à une variable définissant l'orientation du 1er vecteur puis à utiliser les chiffres pairs et impairs.  Un autre vicieux penserait à faciliter le code addition/soustraction exposé plus haut en "affublant" ses vecteurs d'une valeur 1 ou - 1 , qu'il utiliserait ensuite en l'appliquant systématiquement à uyne addition...

Voilà, M'sieur...
A toi, maintenant, de te pencher sur tout celà et de choisir une méthode. Sans quoi, tu pourrais quand même t'en sortir (exactement de la même façon addition/soustraction de surfaces), mais en alourdissant considérablement ton code.

Je te laisse maintena,nt.
Commenter la réponse de jmfmarques
imgKappa 44 Messages postés vendredi 14 mars 2003Date d'inscription 28 avril 2007 Dernière intervention - 28 avril 2007 à 13:04
0
Utile
Merci a toi Rodymary pour le code, je vais l'essayer cette semaine
Commenter la réponse de imgKappa

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.