Original file (SVG file, nominally 705 × 286 pixels, file size: 10 KB)
This is a file from the Wikimedia Commons. Information from its description page there is shown below. Commons is a freely licensed media file repository. You can help. |
DescriptionVoisinage tubulaire.svg |
Français : Voisinage tubulaire de la courbe y=sin(x)
def main():
f = sin(x)
a = 0
b = 2 * pi
N = 1000
# consider N points in the interval [a, b]
X = [a + (b - a) / N * k for k in range(N + 1)]
Y = [f(x=u) for u in X]
ll = 3
# length of lines perpendicular to the curve
lls = 0.3
# smaller subsegments
thin_line = 2
thick_line = 4
# will draw lines perpendicular to the graph of Y=f(X) at
# points separted by length of 'spacing'
spacing = 0.015
M = floor(spacing * N)
# colors
red = [0.867, 0.06, 0.14]
blue = list(vector([0, 129, 205]) / QQ(256))
green = list(vector([0, 200, 70]) / QQ(256))
G = Graphics()
# plot the lines
for k in range(1, N + 1):
p = (k - 1) * M + 2
if p >= N:
break
# the normal to the curve at (X(p), Y(p))
Normal = vector([-(Y[p + 1] - Y[p - 1]), X[p + 1] - X[p - 1]])
Normal = Normal / norm(Normal)
G += line([(X[p] - lls * Normal[0], Y[p] - lls * Normal[1]),
(X[p] + lls * Normal[0], Y[p] + lls * Normal[1])],
color=red,
thickness=0.7 * thick_line)
# plot the curve
G += line2d(zip(X, Y), thickness=thick_line, color=blue)
G.axes(False)
G.set_aspect_ratio(1)
return G
|
Date | |
Source | Own work |
Author | Kilom691 |
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 19:12, 15 October 2015 | 705 × 286 (10 KB) | Kilom691 | User created page with UploadWizard |
This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
If the file has been modified from its original state, some details may not fully reflect the modified file.
Width | 564pt |
---|---|
Height | 229pt |