~ubuntu-fr-scripts/ufrs-math/math-dev

« back to all changes in this revision

Viewing changes to bc-lib/geometrie.bc

  • Committer: Jean-Michel Juzan
  • Date: 2009-04-01 12:03:01 UTC
  • Revision ID: jean-michel@juzan.org-20090401120301-j6g6xj1z0561zdg3
copie de la branche principale

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
### geometrie.bc - a large number of functions for use with GNU BC
 
2
 
 
3
## Not to be regarded as suitable for any purpose
 
4
## Not guaranteed to return correct answers
 
5
#
 
6
# jmj(at)bowlfr.org
 
7
 
 
8
# Calcule du nombre pi
 
9
define pi() {
 
10
        scale=20
 
11
        return(4*a(1))
 
12
}
 
13
 
 
14
# Calcul de la surface d'un triangle connaissant les valeurs de la base et de la hauteur
 
15
# b = base
 
16
# h = hauteur
 
17
define s2tq(b,h) {
 
18
        return( (b*h)/2 )
 
19
}
 
20
 
 
21
# Calcul de la surface d'un triangle équilatéral, "triangle ayant trois côtés égaux" connaissant la longueur du côté
 
22
# c = côté
 
23
define s2te(c) {
 
24
        return( (sqrt(3)/4)*c^2 )
 
25
}
 
26
 
 
27
# Calcul de la surface d'un triangle isocèle "triangle ayant deux côtés égaux" connaissant la valeur des côtés égaux et de la base.
 
28
# b = base
 
29
# c = côté
 
30
define s2ti(b,c) {
 
31
        return( b/2*sqrt(c^2-(b/2)^2))
 
32
}
 
33
 
 
34
# Calcul de la surface d'un triangle scalène "triangle ayant trois côtés inégaux" connaissant la longueur des côtés.
 
35
# a = côté
 
36
# b = côté
 
37
# c = côté
 
38
define s2ts(a,b,c) {
 
39
        p = (a+b+c)/2
 
40
        return( sqrt(p*(p-a)*(p-b)*(p-c)))
 
41
}
 
42
 
 
43
# Calcul de l'hypoténuse d'un triangle rectangle connaissant les deux autres côtés (le triangle rectangle est un triangle ayant un angle de 90° ; l'hypoténuse est le plus grand côté, les deux autres côtés forment l'angle de  90°)
 
44
# a = côté
 
45
# b = côté
 
46
define h2tr(a,b) {
 
47
        return( sqrt(a^2+b^2))
 
48
}
 
49
 
 
50
# Calcul d'un côté d'un triangle rectangle connaissant les longueurs de l'hypoténuse et de l'autre côté
 
51
# h = hypoténuse
 
52
# b = côté
 
53
define c2tr(h,b) {
 
54
        return( sqrt(h^2-b^2))
 
55
}
 
56
 
 
57
# Calcul de la surface d'un triangle rectangle connaissant les deux côtés de l'angle droit.
 
58
# a = côté
 
59
# b = côté
 
60
define s2tr(a,b) {
 
61
        return( (a*b)/2 )
 
62
}
 
63
 
 
64
# Calcul de la diagonale d'un carré connaissant la longueur du côté
 
65
# c = côté
 
66
define d2ca(c) {
 
67
        return( sqrt(2)*c )
 
68
}
 
69
 
 
70
# Calcul de la surface d'un carré connaissant la longueur du côté
 
71
# c = côté
 
72
define s2cac(c) {
 
73
        return( c^2 )
 
74
}
 
75
 
 
76
# Calcul de la surface d'un carré connaissant la longueur de la diagonale
 
77
# d = diagonale
 
78
define s2cad(d) {
 
79
        return( d^2/2 )
 
80
}
 
81
 
 
82
# Calcul de la diagonale d'un rectangle connaissant les valeurs de la base et de la hauteur
 
83
# b = base
 
84
# h = hauteur
 
85
define d2r(b,h) {
 
86
        return( sqrt(b^2+h^2) )
 
87
}
 
88
 
 
89
# Calcul de la surface d'un rectangle ou parallélogramme connaissant les valeurs de la base et de la hauteur.
 
90
# b = base
 
91
# h = hauteur
 
92
define s2r(b,h) {
 
93
        return( b*h )
 
94
}
 
95
 
 
96
# Calcul de la surface d'un losange connaissant la longueur des diagonales
 
97
# (le losange est un quadrilatère ayant quatre côtés égaux et des angles adjacents inégaux).
 
98
# d1 = grande diagonale
 
99
# d2 = petite diagonale
 
100
 
 
101
define s2l(d1,d2) {
 
102
        return( (d1*d2)/2 )
 
103
}
 
104
 
 
105
# Calcul de la surface d'un trapèze connaissant les valeurs des deux bases et de la hauteur.
 
106
# h = hauteur
 
107
# b1 = petite base
 
108
# b2 = grande base
 
109
 
 
110
define s2t(h,b1,b2) {
 
111
        return( (h*(b1+b2))/2 )
 
112
}
 
113
 
 
114
# Calcul de la surface d'un pentagone régulier connaissant la longueur des côtés (le pentagone régulier est un polygone ayant cinq côtés égaux et cinq angles égaux)
 
115
# c = côté
 
116
define s2p(c) {
 
117
        return( 1.72*c^2 )
 
118
}
 
119
 
 
120
# Calcul de la surface d'un hexagone régulier connaissant la longueur d'un côté (l'hexagone régulier est un polygone ayant six côtés égaux et six angles internes égaux)
 
121
# c = côté
 
122
define s2h(c) {
 
123
        return( 2.6*c^2 )
 
124
}
 
125
 
 
126
# Calcul du périmètre d'un cercle (circonférence) connaissant la valeur du diamètre
 
127
# d = diamètre
 
128
define p2c(d) {
 
129
        return( pi()*d )
 
130
}
 
131
 
 
132
# Calcul de la surface d'un cercle connaissant la valeur du diamètre
 
133
# d = diamètre
 
134
define s2c(d) {
 
135
        return( pi()/4*d^2 )
 
136
}
 
137
 
 
138
# Calcul de la longueur d'un arc de cercle connaissant la valeur de l'angle au centre et la longueur du rayon
 
139
# v = valeur de l'angle au centre (en degré)
 
140
# r = rayon
 
141
define l2ac(v,r) {
 
142
        return( pi()/180*v*r )
 
143
}
 
144
 
 
145
# Calcul de la surface d'un secteur circulaire connaissant la valeur de l'angle au centre et la longueur du rayon (un secteur circulaire est la surface plane délimitée par un arc de cercle et deux rayons).
 
146
# v = valeur de l'angle au centre (en degré)grand diamètre
 
147
# r = rayon
 
148
define s2sc(v,r) {
 
149
        return( pi()/360*v*r^2 )
 
150
}
 
151
 
 
152
# Calcul de la surface d'une couronne circulaire connaissant la valeur des deux diamètres (une couronne circulaire est la surface plane comprise entre deux circonférences concentriques).
 
153
# d1 = grand diamètre
 
154
# d2 = petit diamètre
 
155
define s2cc(d1,d2) {
 
156
        return( pi()/4*(d1^2 - d2^2) )
 
157
}
 
158
 
 
159
# Calcul de la surface d'un segment de parabole connaissant la valeur de la base et de la hauteur (on appelle segment de parabole la surface plane comprise entre un arc de parabole et la corde sous-tendue entre les extrémités de l'arc).
 
160
# b = base
 
161
# h = hauteur
 
162
define s2sp(b,h) {
 
163
        return( 2/3*b*h )
 
164
}
 
165
 
 
166
# Calcul de la surface d'une ellipse connaissant la longueur des deux axes
 
167
# a = grand axe
 
168
# b = petit axe
 
169
define s2e(a,b) {
 
170
        return( pi()/4*a*b )
 
171
}
 
172
 
 
173
# Calcul de la longueur d'une hélice connaissant le nombre de spires, les valeurs du diamètre et de la hauteur
 
174
# n = nombre de spires
 
175
# d = diamètre
 
176
# h = hauteur
 
177
define l2h(n,d,h) {
 
178
        return( sqrt(pi()^2*n^2*d^2+h^2) )
 
179
}
 
180
 
 
181
# Calcul du volume d'un cube connaissant la longueur de l'arête
 
182
# a = arête
 
183
define v2cu(a) {
 
184
        return( a^3 )
 
185
}
 
186
 
 
187
# Calcul d'une diagonale d'un cube
 
188
# d = diagonale
 
189
# a = arête
 
190
define d2cu(a) {
 
191
        return( a*sqrt(3) )
 
192
}
 
193
 
 
194
# Calcul du volume d'un parallélépipède connaissant les valeurs de la longueur et de la largeur de la base, et la hauteur
 
195
# a = longueur de la base
 
196
# b = largeur de la base
 
197
# h = hauteur
 
198
define v2pa(a,b,h) {
 
199
        return( a*b*h )
 
200
}
 
201
 
 
202
# Calcul du volume d'un cylindre connaissant les valeurs du diamètre et de la hauteur
 
203
# d = diamètre
 
204
# h = hauteur
 
205
define v2cy(d,h) {
 
206
        return( pi()/4*d^2*h )
 
207
}
 
208
 
 
209
# Calcul du volume d'un cylindre creux connaissant les valeurs des deux diamètres et de la hauteur
 
210
# d1 = diamètre externe
 
211
# d2 = diamètre interne
 
212
# h = hauteur
 
213
define v2cyc(d1,d2,h) {
 
214
        return( pi()/4*(d1^2-d2^2)*h )
 
215
}
 
216
 
 
217
# Calcul du volume d'un anneau à section carrée connaissant les valeurs des diamètres externes et internes
 
218
# d1 = diamètre externe
 
219
# d2 = diamètre interne
 
220
define v2a(d1,d2) {
 
221
        return( pi()/8*(d1-d2)^2*(d1+d2) )
 
222
}
 
223
 
 
224
# Calcul du volume d'un tore (anneau à section circulaire) connaissant la valeur du diamètre extérieur et celle du diamètre de la section de l'anneau
 
225
# d1 = diamètre externe
 
226
# d2 = diamètre interne
 
227
define v2t(d1,d2) {
 
228
        return( pi()^2/4*(d1-d2)*d2^2 )
 
229
}
 
230
 
 
231
# Calcul de la surface d'une sphère connaissant la valeur du diamètre
 
232
# d = diamètre
 
233
define s2s(d) {
 
234
        return( pi()*d^2 )
 
235
}
 
236
 
 
237
# Calcul du volume d'une sphère connaissant la valeur du diamètre
 
238
# d = diamètre
 
239
define v2s(d) {
 
240
        return( pi()/6*d^3 )
 
241
}
 
242
 
 
243
# Calcul de la surface d'une calotte sphérique connaissant les valeurs du diamètre du contour et de la hauteur
 
244
# d = diamètre du contour
 
245
# h = hauteur de la calotte
 
246
define s2cs(d,h) {
 
247
        return( pi()/4*(d^2+4*h^2 ) )
 
248
}
 
249
 
 
250
# Calcul du volume d'une calotte sphérique connaissant la valeur du diamètre de la base et de la hauteur
 
251
# d = diamètre de la base
 
252
# h = hauteur de la calotte
 
253
define v2cs(d,h) {
 
254
        return( pi()*h^2*((3*d^2+4*h^2)/(24*h)) )
 
255
}
 
256
 
 
257
# Calcul du volume d'une paraboloïde connaissant la valeur du diamètre de la base et de la hauteur
 
258
# d = diamètre de la base
 
259
# h = hauteur de la paraboloïde
 
260
define v2pb(d,h) {
 
261
        return( pi()/8*d^2*h )
 
262
}