Longueur d'un rayon

Messages postés
7
Date d'inscription
mardi 21 novembre 2017
Statut
Membre
Dernière intervention
17 juin 2019
- - Dernière réponse : Astro49
Messages postés
7
Date d'inscription
mardi 21 novembre 2017
Statut
Membre
Dernière intervention
17 juin 2019
- 17 juin 2019 à 01:42
Bonjour à Tous,

Je souhaiterais connaitre la formule afin d'obtenir la longueur maximale d'un rayon.
Je m'explique, un point aléatoire est mis dans une surface (rectangle, carré ou cercle). A partir de ce point je voudrais connaitre (en fonction de l'angle de 0° à 359°) la longueur maximale du rayon afin que celui-ci touche un des bords ou le bord pour un cercle.
Sinon obtenir le point maxi x,y de la fin du rayon touchant un bord et à partir de là j'obtiendrais la longueur en calculant l'hypoténuse du point aléatoire au bord.
Objet du calcul : je pars d'un point avec une faible luminosité aléatoire et celle-ci doit arriver a son maximum à la fin du rayon. Cela je sais le faire, ce qui me manque c'est la formule afin d'éviter de faire un pré-calcul avec un rayon progressif.
J'espère avoir été assez explicite.

Merci d'avance
Afficher la suite 

3 réponses

Messages postés
13401
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 juin 2019
279
0
Merci
Bonjour
C’est pas de la programmation, c’est des maths, je déplace donc ton sujet.

Par contre, peux tu poster un schéma qui illustrerait ton besoin.
Astro49
Messages postés
7
Date d'inscription
mardi 21 novembre 2017
Statut
Membre
Dernière intervention
17 juin 2019
-
Bonjour Whismeril,

C'est effectivement un problème de maths ou plus exactement de trigonométrie, il n'en reste pas moins qu'il s'agit bien de programmation !
Je n'ai pas de schéma à te proposer car il s'agit d'un programme qui est en cours d'élaboration, il ne me manque plus que la formule pour le terminer.
Cela rentre dans le cadre d'une démonstration d'effets graphiques dédiés au traitement de la couleur en VB6 avec les fonctions de l'API.

Dans quelle rubrique as-tu déplacé, à tort me semble t-il, mon post ?

Merci et bon week-end.
Commenter la réponse de Whismeril
Messages postés
13401
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 juin 2019
279
0
Merci
Bonsoir

j'ai déplacé dans "Autres Méthodes" et pas à tord puisque tu cherches une formule et pas un code VB6, à moins que tu aies mal formulé ton texte.

Je n'ai pas de schéma à te proposer car il s'agit d'un programme qui est en cours d'élaboration

Alors il faut que tu décrives mieux, car là, j'ai pas compris ce que tu veux, et personne d'autre n'a répondu entre temps


Astro49
Messages postés
7
Date d'inscription
mardi 21 novembre 2017
Statut
Membre
Dernière intervention
17 juin 2019
-
Bonjour,

Une formule oui, mais en VB6, ;)

Problème : calculer la longueur d'un rayon partant d'un point, par exemple, 50,100 avec une direction de 38° jusqu'à l'un des bords d'un rectangle de 800x400.
En fait ce que je veux c'est, à partir d'un point situé n'importe où dans une surface,
tracer pixel par pixel un rayon qui commence par une couleur sombre et qui finit par du blanc à la fin du rayon qui touche un des bords de la surface suivant un angle donné. Il me faut donc connaitre la longueur du rayon afin de faire varier les composantes rvb de la couleur de départ. La surface peut être un carré, un rectangle, un cercle, une ellipse ou bien un polygone voire une étoile à n branches.
Pour l'instant je créé une région de la surface et fais un rayon progressif dans une boucle pour chaque degré (0...359). Si le point x,y calculé sort de la région ( If PtInRegion(region, x, y) = 0) j j'obtiens la longueur du rayon +1. Je mets dans un tableau la longueur du rayon -1 pour l'angle en cours et quitte la boucle du rayon pour continuer la boucle des degrés. C'est pour éviter ce pré-calcul que je souhaite obtenir une formule du moins pour un carré ou un rectangle. Je sais qu'il en existe une mais mes notions de trigonométrie datent de plus de 60 ans !
Pour un cercle c'est facile, je calcule la distance du point excentré x,y avec celle du point x,y donnée par le rayon maximal à partir du centre. Pour lune ellipse j'utilise un rayon x et un rayon y.
Pour un polygone ou une étoile je ne vois pas d'autres solution que de passer par un pré-calcul.
Au final cela donne un point sombre avec des rayons sur 360° qui vont en s'éclaircissant sur les bords de la surface (ou inversement). J'ai aussi essayé de passer d'une couleur sombre à une autre plus claire et il en résulte aussi un joli effet de divers dégradés.
J'espère, cette fois ci, m'être mieux fait comprendre et merci de m'avoir lu jusqu'au bout !

Bonne semaine.
Commenter la réponse de Whismeril
Messages postés
28
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
17 juin 2019
0
Merci
Salut,

C'est plutôt simple!
Tu testes la distance x,y entre les bords haut, bas, droite et gauche.
Tu prends la distance la moins grande sur les 4 distances, …. c'est ton rayon!

Donc, pas trop mathématique. Enfin, si les +, les - et les ABS, c'est pour les matheux… mais bon…

;)

Bonne chance.
Astro49
Messages postés
7
Date d'inscription
mardi 21 novembre 2017
Statut
Membre
Dernière intervention
17 juin 2019
-
Bonjour,

Non ta méthode ne va pas. En effet si on suppose une rectangle de 800x400 et un point à100,100 la plus petite distance ne peut en aucun cas être le rayon qui touche le bord droit ou le bord inférieur.
Merci quand même.
Commenter la réponse de JeuDuTaquin