Page 1 sur 1

Dessiner un cercle sans circle() + épaisseur de trait

Publié : jeu. 23/avr./2020 15:37
par Stéphane
Bonjour

Je souhaiterais déterminer le point d intersection de deux cercles.
Pour cela j ai envisagé de dessiner un premier cercle puis un second en testant la couleur du point qui va être dessiné afin de savoir s il est de la couleur du cercle précédemment dessiné.
Cela m’évite de faire des calculs pour lesquels je devrais suivre un tuto pke le lycée ça fait 33 ans...

J ai trouvé la fonction circle qui dessine un disque (un cercle plein) et non un le périmètre du cercle .
J ai potassé la doc sur le dessin 2D et n ai pas trouvé de paramètre pour modifier l’épaisseur du trait dans Plot, line, lineXY..
Je n ai pas trouvé de fonction ou de paramètre à appliquer pour dessiner un cercle et non un disque.

Mes questions et j y arrive :
Existe t il une fonction qui permet de dessiner un cercle point par point sur son périmètre ?
Existe t il un paramètre qui permet de choisir l épaisseur de ce que l on dessine (plot, line, lineXY)...Sinon comment y remédier ?
Si l un d entre vous a un code qui permet de calculer les points d intersection de deux cercles, je suis intéressé

Merci pour votre aide

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : jeu. 23/avr./2020 16:52
par Mindphazer
Tu peux essayer ce module, il est basé sur la vectorlib
https://www.purebasic.fr/english/viewto ... 27&t=73051

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : jeu. 23/avr./2020 17:08
par SPH

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : jeu. 23/avr./2020 17:21
par falsam
DrawingMode(#PB_2DDrawing_Outlined) permet de dessiner uniquement un contour.

Exemple avec ton cercle.

Code : Tout sélectionner

EnableExplicit

Enumeration window
  #mf
EndEnumeration

Enumeration gadget
  #mfCanvas
EndEnumeration

Declare start()
Declare exit()

start()

Procedure start()
  OpenWindow(#mf, 0, 0, 800, 600, "Nouvelle application", #PB_Window_SystemMenu| #PB_Window_ScreenCentered)
  
  CanvasGadget(#mfCanvas, 0, 0, 800, 600)
  
  If StartDrawing(CanvasOutput(#mfCanvas))
    DrawingMode(#PB_2DDrawing_Outlined)
    Circle(400, 300, 200, RGB(128, 128, 128))
    StopDrawing()  
  EndIf
  
  BindEvent(#PB_Event_CloseWindow, @exit())
  
  Repeat : WaitWindowEvent() : ForEver
EndProcedure

Procedure exit()
  End  
EndProcedure

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : jeu. 23/avr./2020 17:46
par Demivec
Stéphane a écrit :Existe t il une fonction qui permet de dessiner un cercle point par point sur son périmètre ?
CustomFilterCallback().

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : jeu. 23/avr./2020 22:48
par Stéphane
Merci pour vos réponses, j ai tout ce dont j ai besoin maintenant :)

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : ven. 24/avr./2020 8:23
par Ollivier
Eh non... T'as pas tout !

Parce que tout ça, tu le fais parce que tu voulais pas ton cours de maths :

The mathematic lesson

Et puis un vrai site de maths avec l'adresse mail de l'auteur si besoin (c'est peut-être le moment, si ce n'est pas trop tard). Ce site fait partie de ceux que j'apprécie bien.

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : ven. 24/avr./2020 10:45
par Stéphane
C est pas faux :oops:

Moi les maths si j ai pas en tuto un exercice concret et résolu, j arrive pas à imprimer...

Je vais aller voir ce code, Merci

Re: Dessiner un cercle sans circle() + épaisseur de trait

Publié : ven. 24/avr./2020 11:07
par Ollivier
Pour le faire fonctionner :

1) Soit tu l'adaptes à la dernière version du compilateur

2) Soit tu prends la licence, qui rend dispo toutes les anciennes versions. Je crois celle-là c'est la 4.60 :lol: