1

coucou,

j'ai un ensemble de S secteurs angulaires, et un angle. Je voudrais savoir dans quel secteur se "range" mon angle.

Exemple avec S=2:
secteur 1: 170° autour de la direction 0°
secteur 2: 170° autour de la direction 180°
angle a tester: N degrés.

je sens que j'ai un pb de repérage des angles. Pour le moment je gradue mon cercle de -180 à +180, N est aussi dans cet intervalle (je l'obtiens par atan2())
les angles sont tous correctement en degrés (j'ai vérifié) grin

je voudrais faire un truc comme ça:
trouver_secteur(theta):
pour chaque secteur (direction, largeur):
    soit debut=direction-largeur/2
    soit fin=direction+largeur/2
    si(debut<theta et theta<=fin) alors finir, j'ai trouvé mon secteur
fin pour
j'ai pas trouvé de secteur qui contient mon angle


évidemment, ça ne marche pas dans tous les cas, mais je ne trouve pas quelles corrections je dois appliquer!
une idée?

2

En meme temps 170+170 ne fait pas 360 chez moi
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3

Déjà assure toi que tes angles sont tous dans le même intervalle, par exemple [0; 360[ (je suppose que c'est ce que tu fais)
Après la méthode de début est fin marche pas si simplement car elle produit des angles négatifs.

n pour j'ai pas trouvé de secteur qui contient mon angle
En reprenant ton pseudo-code je ferais plutôt qqc du genre:trouver_secteur(theta):
pour chaque secteur (direction, largeur):
    si ((abs(theta - direction) < largeur / 2) ou
        (360 - abs(theta - direction) < largeur / 2))
    alors finir, j'ai trouvé mon secteur
fi
Y'a peut-être quelques ajustements à faire encore mais ça devrait fonctionner plus souvent déjà je pense grin
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

4

1> En même temps, j'ai jamais dit que l'algo devait forcément retourner un secteur embarrassed

2> je vais tester, mais ça me parait pas mal en effet.

5

Bon, testé, merci pour la méthode, c'est plus simple que mon truc et ça marche.
En plus y'avait un problème d'aspect ratio de ma fenêtre qui faisait foirer la mesure d'angle.

donc c'est tout bon, merci hehe

6

largeur / 2 devrait être largeur >> 1 pour un entier ou ldexp(largeur, -1) pour un flottant.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

ah non, tu vas commencer avec tes trucs là hein, je ne fais ni du code embarqué, ni du code optimisé angry

8

Kevin Kofler (./6) :
ldexp(largeur, -1) pour un flottant.

Et c'est plus rapide que largeur*0.5 sur un processeur moderne ? confus

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

9

ça doit être basé sur un opcode du fpu je suppose, si la libc est bien faite, mais sous winxp j'ai un doute grin

10

Pollux (./8) :
Et c'est plus rapide que largeur*0.5 sur un processeur moderne ? confus.gif


Non. Aucun CPU d'ailleurs je pense (sauf en émulation logicielle peut être). Perso ldexp j'évite dès que possible.