FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
Dessin d'arc Emptypar jjn4 Hier à 17:49

» select intégrés [résolu]
Dessin d'arc Emptypar jjn4 Hier à 17:00

» number_mouse_up
Dessin d'arc Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
Dessin d'arc Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
Dessin d'arc Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
Dessin d'arc Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
Dessin d'arc Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Dessin d'arc Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Dessin d'arc Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Dessin d'arc Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Dessin d'arc Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Dessin d'arc Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Dessin d'arc Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Dessin d'arc Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Dessin d'arc Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache Runner
69.99 € 139.99 €
Voir le deal

 

 Dessin d'arc

Aller en bas 
4 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Dessin d'arc Empty
MessageSujet: Dessin d'arc   Dessin d'arc EmptySam 4 Avr 2020 - 19:18

Pour dessiner un arc de cercle dont on connait les coordonnées des extrémités et le rayon de courbure.
Horizontalement ou verticalement.
On peut ainsi dessiner des 'rectangles' aux côtés arrondis, etc:
Code:
DIM x1,y1,x2,y2,R
WIDTH 0,800: HEIGHT 0,900
PICTURE 1: FULL_SPACE 1: 2D_TARGET_IS 1: ' 2D_FILL_OFF
x1 = 200: y1 = 80: x2 = 600: y2 = 800
R = 800
2D_PEN_WIDTH 2
Arc(x1,y1,x2,y1,R,1): ' haut vers le haut
Arc(x1,y1,x2,y1,R,2): ' haut vers le bas
2D_flood x1+20,y1,255,0,0
Arc(x1,y1,x1,y2,R,1): ' gauche vers la gauche
Arc(x1,y1,x1,y2,R,2): ' gauche vers la droite
2D_flood x1,y1+20,255,0,0
Arc(x2,y1,x2,y2,R,1): ' droite vers la gauche
Arc(x2,y1,x2,y2,R,2): ' droite vers la droite
2D_flood x2,y1+20,255,0,0
Arc(x1,y2,x2,y2,R,1): ' bas vers le haut
Arc(x1,y2,x2,y2,R,2): ' bas vers le bas
2D_Flood x1+20,y2,255,0,0
2D_flood x1+100,y1+100,0,0,255
END
' =======================================================================
SUB Arc(x1,y1,x2,y2,R,sens)
  ' Tracé d'un arc de cercle entre deux points à l'horizontale ou verticale
  ' R = rayon de la courbure
  ' sens (courbure) =1: vers le haut ou la gauche, =2 vers le bas ou la droite
  DIM_LOCAL d,h,a,xc,yc,a1,a2
  DEGREES
  d = SQR((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)): ' 1/2 distance entre les points
  h = SQR(R*R-d*d/4)
  a = 2*ASIN(d/(2*R)): ' angle total de l'arc
  IF x2 > x1: ' y2 = y1: sens horizontal
      xc = x1+(x2-x1)/2: yc = y1+h: a1 = 90+a/2
      IF sens = 2 THEN yc = y1-h: a1 = 270+a/2
  ELSE : ' x2 = x1: sens vertical
      yc = y1+(y2-y1)/2: xc = x1+h: a1 = 180+a/2
      IF sens = 2 THEN xc = x1-h: a1 = a/2
  END_IF
  a2 = a1-a
  2D_ARC xc,yc,R,a1,a2
END_SUB  
' =======================================================================
On peut choisir la position e l'arc, vers l'intérieur ou vers l'extérieur.
Il est facile de calculer les coordonnées du centre du cercle, connaissant celles des extrémités
et le rayon de courbure de l'arc.
Dans mon cas, la ligne joignant les extrémités doit être horizontale ou verticale.

Ce que je n'ai pas trouvé, c'est la formule (coordonnées du centre) dans le cas d'une ligne oblique.
Et pourtant là aussi la position du centre est bien définie, il est à égale distance (= R) des deux points
mais... ma trigo/géométrie est bien loin...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptySam 4 Avr 2020 - 23:47

JL35 a écrit:
Ce que je n'ai pas trouvé, c'est la formule (coordonnées du centre) dans le cas d'une ligne oblique.

Si j’ai bien compris (car ces jours-ci je n’arrive pas toujours à tout comprendre   Shocked  ), tu veux calculer les coordonnées du milieu M(xm,ym) d’un segment [AB] dont on connait les coordonnées des extrémités A(xa,ya) et B(xb,yb).
Si c’est ça, alors, ce code est pour toi. Idea  "Elémentaire mon cher Watson"
Si non, ... please reformule ta formule pour trouver la bonne formule.


Code:

dim xa,ya,xb,yb : ' coord des 2 points A(xa,ya) et B(xb,yb)
dim xm,ym       : ' coord du milieu de la droite AB
picture 10 : full_space 10 : 2d_target_is 10 : print_target_is 10 : font_bold 10
font_color 10,0,0,255
xa = 50 : ya = 300   : print_locate xa+2,ya : print "A(xa,ya) = A(50,300)"
xb = 450 : yb = 50   : print_locate xb+2,yb : print "B(xb,yb) = B(450,50)"
2d_line xa,ya,xb,yb
xm = (xa+xb)/2 : ym = (ya+yb) /2
print_locate xm+2,ym : print "M(xm,ym) = M(250,175)"
print_locate xm,ym+15 : print "xm = (xa+xb)/2 = (50+450) /2 = 250"
print_locate xm,ym+30 : print "ym = (ya+yb)/2 = (300+50) /2 = 175"

2d_fill_color 255,0,0
2d_circle xa,ya,4  : 2d_circle xb,yb,4 : 2d_circle xm,ym,4
2d_fill_color 255,255,255
print_locate 20,350 : print "Formules donnant les coordonnées du milieu M du segment [AB]"
2d_rectangle 70,380,350,420
print_locate 80,390 : print "xm = (xa + xb) / 2" + string$(15," ") + "ym = (ya + yb) / 2"

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 8:58

En posant ma question j'avais une sérieuse arrière-pensée pour toi papydall, même si ce n'est pas très loyal !
Désolé, je me suis mal exprimé, ce ne sont pas les coordonnées du centre du segment que je cherche,
ça c'est facile, ce sont les coordonnées du centre de l'arc de cercle de rayon R passant par les extrémités du segment.

C'est facile si le segment est horizontal ou vertical (ce que j'ai fait plus haut), mais plus difficile si le segment est en biais.
Je résume:
- deux points dans l'espace (plan !), de coordonnées x1,y1 et x2,y2
- un cercle de rayon R qui passe par ces deux points
- je cherche les coordonnées xc,yc du centre du cercle
 (pour pouvoir le tracer, ou seulement l'arc, dans ce cas l'angle est facile à trouver)

Il y a évidemment deux solutions symétriques par rapport au segment, suivant que l'arc est d'un côté ou de l'autre.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 10:17

Par deux points A et B passent une infinité de cercles.
Mais quand on connait le rayon en plus, on a affaire non pas à un seul cercle mais bien deux : (c’est déjà mieux qu’une infinité !)
Le centre de ces cercles se trouve sur la médiatrice du segment AB et les deux centres sont à la même distance d des points A et B.
Pour des plus amples informations, rend-toi à  ce site.
Attention : tu ne dois pas te rendre ni à pieds, ni en voiture, No  mais en cliquant sur le lien ci-dessus rabbit
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 10:38

Merci mon ami papydall, je savais tout ça, je voulais seulement connaître les coordonnées des centres symétriques
connaissant le rayon du cercle et celles des extrémités du segment.

Je vais regarder sur ton site si je rouve la solution toute faire, sinon il va bien me falloir refaire de la géométrie...
Merci à toi en tout cas.

PS j'ai jeté un oeil, mais le moins que l'on puisse dire c'est que ce n'est pas simple comme explications,
c'est même plutôt alambiqué !
Je vais essayer de trouver une solution moi-même...plus simple si possible !
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2703
Date d'inscription : 13/09/2009

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 15:22

Ouah, jolie figure !
Et bien, les arcs de cercle !
Sans aucunement vouloir interférer
dans vos performances mathématiques.
J'y ajoute mon grain de sel,
mais juste pour faire joli !
Dessin d'arc Alien-10
lol!
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 16:16

Salut jj,
On dirait un personnage de livre pour les enfants martiens...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7006
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 16:20

@ JL35

Tu sais comment trouver le centre du cercle pour un arc dont les extrémités sont à la verticale (ou à l’horizontale).
Tu désires déterminer le centre du cercle pour un arc dont les extrémités sont obliques c’est à dire que le segment à subi une rotation d’un certain angle disons theta pour fixer les idées.
Le centre à chercher serait le même centre mais avec une rotation du même angle theta
On doit donc déterminer deux choses : l’angle de rotation, puis on applique la matrice de rotation aux coordonnées du centre du cercle initialement connu.
Rappel :
Soit (x,y) les coordonnées du point avant rotation
Soit (x1,y1) les nouvelles coordonnées du point après rotation d’un angle thêta.
On applique la matrice de rotation au couple (x,y) pour déterminer celui (x1,y1)
X1 = x * cos(theta) – y * sin(theta)
Y1 = x * sin(theta) + y* cos(theta)
Le sens de rotation du segment est le sens anti-horaire si theta est positif et dans le sens horaire si theta est négatif.

Si tu peux explorer cette piste,  tu pourrais peut-être trouver la solution


@jjn4

C'est ton futur engin pour la planète Mars ?

Sans rapport aucun avec le sujet sur les arcs et les cercles, voici

Le cercle tournant:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyDim 5 Avr 2020 - 16:59

Merci papydall, ça c'est une piste intéressante, je vais étudier ça.
J'avais pensé naïvement que du fait que c'est très facile à tracer on pouvait trouver une formule algébrique
fonction de x1,y1,x2,y2 et R qui donnerait les coordonnées du centre.
Je vais voir avec les angles, merci encore.

Joli le cercle tournant !
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyLun 6 Avr 2020 - 0:30

JL35 a écrit:
J'avais pensé naïvement que du fait que c'est très facile à tracer on pouvait trouver une formule algébrique
fonction de x1,y1,x2,y2 et R qui donnerait les coordonnées du centre.
Peut-être comme ça:
Code:
' http://villemin.gerard.free.fr/GeomLAV/Cercle/Centre.htm#R2P1
' Deux points quelconques et le rayon – Méthode par la médiatrice

dim r,xa,xb,ya,yb,k,h,m,n,p,x0,y0,x1,y1,ad,aa

degrees : 2d_fill_off

' rayon du cercle passant par les extrémités du segment
r=150

' coordonnées des extrémités du segment
xa=100 : ya=200
xb=150  : yb=350

' calcul
k=(xa-xb) / (yb-ya)
h=((xb*xb)-(xa*xa)+(yb*yb)-(ya*ya)) / (2*(yb-ya))

m=(k*k)+1
n=(0-2*xa) + (2*k*h) - (2*k*ya)
p=(xa*xa) + (ya*ya) -(2*h*ya) + (h*h) - (r*r)

' coordonnées des centres des cercles à gauche et à droite du segment:
' S1
 x1= (0-n - sqr((n*n) - 4*m*p)) / (2*m)
 y1= (k*x1) + h
 print "S1 : ",x1,"   ",y1

' S0
x0= (0-n + sqr((n*n) - 4*m*p)) / (2*m)
y0= (k*x0) + h
print "S0 : ",x0,"   ",y0

' tracé du segment
2d_pen_color 0,0,255
ligne(xa,ya,xb,yb)

' tracé d'un arc de cercle
2d_pen_color 0,0,0
 cercle(x1,y1,2) :' montre le centre du cercle de coordonnée x1,y1
 ad= asin((yb-y1)/r)
 aa= asin((ya-y1)/r)
 arc(x1,y1,r,ad,aa) :' arc de cercle passant par les extrémités du segment

' tracé d'un arc de cercle
2d_pen_color 255,0,0
cercle(x0,y0,2) :' montre le centre du cercle de coordonnée x0,y0
ad= 180-asin((ya-y0)/r)
aa= 180-asin((yb-y0)/r)
arc(x0,y0,r,ad,aa) :' arc de cercle passant par les extrémités du segment


END
sub cercle(x1,y1,ray)
   2d_circle x1,height_client(0)-y1,ray
end_sub

sub ligne(x1,y1,x2,y2)
   2d_line x1,height_client(0)-y1,x2,height_client(0)-y2
end_sub

sub arc(x1,y1,ray,ad,aa)
   2d_arc x1,height_client(0)-y1,ray,ad,aa
end_sub
drunken
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc EmptyLun 6 Avr 2020 - 10:44

Merci silveerman !

Je venais d'arriver à une solution à peu près convenable, mais pas aussi aboutie que la tienne.
Je vais regarder de plus près, merci encore.
Revenir en haut Aller en bas
Contenu sponsorisé





Dessin d'arc Empty
MessageSujet: Re: Dessin d'arc   Dessin d'arc Empty

Revenir en haut Aller en bas
 
Dessin d'arc
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Dessin 2d
» Dessin sur A4
» Dessin
» Dessin(x)
» Dessin INDUSTRIEL animé

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: