Informations sur: decalage vecteur (sans mot de passe que je n'avais pas mis d'ailleur)

Publié par diemaker form le 25/02/2008

Description

décalages avec mêmes coordonnées

Code source (langage non précisé)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
CLEAR
'************* ajustement taille ecran ***************
CLS
OPEN "lignes.txt" FOR INPUT AS #1
max = 0
may = 0
DO WHILE NOT EOF(1)
           INPUT #1, A$, b, c, d, e, f, g, h, i$
             'c=Xdepart d=Ydepart e=Xfin f=Yfin

        IF c > max THEN max = c
        IF e > max THEN max = e
        IF d > may THEN may = d
        IF f > may THEN may = f
LOOP
        Xmax$ = STR$(max): Xmax$ = LTRIM$(RTRIM$(Xmax$))
        Ymax$ = STR$(may): Ymax$ = LTRIM$(RTRIM$(Ymax$))
        xwin = CLNG(VAL(Xmax$))
        ywin = CLNG(VAL(Ymax$))
CLOSE
'******************************** dessin *************

SCREEN 12: WINDOW (-1, ywin + 2)-(xwin + 2, -1): CLS

    DEFSTR A-Z
   PI! = 3.141593

OPEN "lignes-2.txt" FOR INPUT AS #1
DO WHILE NOT EOF(1)
               INPUT #1, A$, b!, c!, d!, e!, f!, g!, h!, i$

' (A$=A ou L )(b!=pointage)
' (c!=X depart)(d!=Y depart)(e!=X arrivee)(f!=Y arrivee)
' (g!=X centre rayon)(h!=Y centre rayon)(i$= sens du rayon)

Xdepart! = c!: Ydepart! = d!: Xarrivee! = e!: Yarrivee! = f!
Xcentre! = g!: Ycentre! = h!

'''attribution des couleurs au pointage'''
        IF b! = 1 THEN     'SENS FIBRES TETE 1
         coul! = 14       'couleur jaune
        END IF
        IF b! = 2 THEN     'SENS TRAVERS TETE 2
         coul! = 10       'couleur vert clair
        END IF
        IF b! = 3 THEN     'SENS 120 degres TETE 3
         coul! = 9       'couleur bleu clair
        END IF
        IF b! = 4 THEN     'SENS trous centrage TETE 4
         coul! = 12       'couleur rouge clair
        END IF
        IF b! = 5 THEN     'SENS 160 degres TETE 5
         coul! = 11       'couleur cyan clair
        END IF

'envoi ecran
    IF A$ = "L" THEN
       LINE (c!, d!)-(e!, f!), coul!
    END IF
 
    IF A$ = "A" THEN
     R! = SQR((Xcentre! - Xarrivee!) ^ 2 + (Ycentre! - Yarrivee!) ^ 2)  'calcul rayon
     X! = c! - g!: Y! = d! - h!'coord depart moins coord centre
     GOSUB GS01.ANALYSE
     X! = e! - g!: Y! = f! - h!'coord fin moins coord centre
     Angledebut! = Angle!
     GOSUB GS01.ANALYSE
     Anglefin! = Angle!
     IF Angledebut! = Anglefin! THEN  'controle si un cercle
     CIRCLE (g!, h!), R!, coul!
     ELSE
     CIRCLE (g!, h!), R!, coul!, Angledebut!, Anglefin!
     END IF
    END IF
LOOP
CLOSE
DO
LOOP WHILE INKEY$ = ""

END
'**********************
GS01.ANALYSE: 'Calcul de l'angle trigo
    SELECT CASE X! ' ATN(expression numerique)
        CASE IS < 0: ' Calcul direct impossible
            SELECT CASE Y!
                CASE IS < 0 'QUADRANT 3
                    X1! = ABS(X!)
                    Sinus1! = Y! / X1!
                    Cosinus1! = X1! / Y!
                    Tangente1! = Sinus! / Cosinus1!
                    Angle1! = ATN(Tangente1!)
                    Angle! = PI! + ABS(Angle1!)
                CASE IS = 0 ' Ligne des abscisses,  a gauche
                    Angle! = PI!
                CASE IS > 0 ' QUADRANT 2
                    X1! = ABS(X!)
                    Y1! = ABS(Y!)
                    Sinus1! = Y1! / X1!
                    Cosinus1! = X1! / Y1!
                    Tangente1! = Sinus1! / Cosinus1!
                    Angle1! = ATN(Tangente1!)
                    Angle! = PI! - ABS(Angle1!)
            END SELECT
        CASE 0
            SELECT CASE Y!
                CASE IS < 0 ' Ligne des ordonnees en bas
                    Angle! = PI! * 6 / 4
                CASE IS = 0 ' A l'intersection lignes abscisses et ordonnees
                            ' IMPOSSIBLE
                CASE IS > 0 ' Ligne des ordonnees, en haut
                    Angle! = PI! / 2
            END SELECT
        CASE IS > 0
            SELECT CASE Y!
                CASE IS < 0 ' QUADRANT 4
                    Sinus! = Y! / X!
                    Cosinus! = X! / Y!
                    Tangente! = Sinus! / Cosinus!
                    Angle! = ATN(Tangente!)
                    Angle! = 2 * PI! - Angle!
                CASE IS = 0 ' Ligne des abscisses, a droite
                    Angle! = 0
                CASE IS > 0 ' QUADRANT 1
                    Sinus! = Y! / X!
                    Cosinus! = X! / Y!
                    Tangente! = Sinus! / Cosinus!
                    Angle! = ATN(Tangente!)
                END SELECT
    END SELECT
RETURN
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,017 s - Crédits - Stats
1 connecté