mirror of
https://github.com/ManimCommunity/manim.git
synced 2026-06-22 10:01:47 +00:00
* #added some examples to the camera scene * #added 3 ZoomedScene examples * #removed accidentally added files * #added updater examples * #added text examples * #renamed example * #added 3d example with other light source * #added imagemobject examples * # added one line of code * # small fix * # added 3d examples * # added one advanced project * fixed error * small changes * 3d render * another idea with the file 3d_fix.rst * # one more change * some more formula examples * fix indent * remove reference to examples/3d_fix * change default resolution for videos in doc to 480p30 * Apply suggestions leotrs Co-authored-by: Leo Torres <leo@leotrs.com> * Added credits and 3d scene changes * # removed unnecessary lines * # implemented lots of changes suggested be leotrs * # updated credits * # updated scene names * Update docs/source/examples/shapes.rst Co-authored-by: Leo Torres <leo@leotrs.com> * updated credits * updated examples entery * Update camera_settings.rst * changed two lines * Update shapes.rst * Update plots.rst Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at> Co-authored-by: Leo Torres <leo@leotrs.com>
91 lines
2.9 KiB
ReStructuredText
91 lines
2.9 KiB
ReStructuredText
Advanced Projects
|
|
=================================
|
|
|
|
.. manim:: ExampleSineCurve
|
|
|
|
class ExampleSineCurve(Scene):
|
|
# contributed by heejin_park, https://infograph.tistory.com/230
|
|
def construct(self):
|
|
self.show_axis()
|
|
self.show_circle()
|
|
self.move_dot_and_draw_curve()
|
|
self.wait()
|
|
|
|
def show_axis(self):
|
|
x_start = np.array([-6,0,0])
|
|
x_end = np.array([6,0,0])
|
|
|
|
y_start = np.array([-4,-2,0])
|
|
y_end = np.array([-4,2,0])
|
|
|
|
x_axis = Line(x_start, x_end)
|
|
y_axis = Line(y_start, y_end)
|
|
|
|
self.add(x_axis, y_axis)
|
|
self.add_x_labels()
|
|
|
|
self.orgin_point = np.array([-4,0,0])
|
|
self.curve_start = np.array([-3,0,0])
|
|
|
|
def add_x_labels(self):
|
|
x_labels = [
|
|
TexMobject("\pi"), TexMobject("2 \pi"),
|
|
TexMobject("3 \pi"), TexMobject("4 \pi"),
|
|
]
|
|
|
|
for i in range(len(x_labels)):
|
|
x_labels[i].next_to(np.array([-1 + 2*i, 0, 0]), DOWN)
|
|
self.add(x_labels[i])
|
|
|
|
def show_circle(self):
|
|
circle = Circle(radius=1)
|
|
circle.move_to(self.orgin_point)
|
|
|
|
self.add(circle)
|
|
self.circle = circle
|
|
|
|
def move_dot_and_draw_curve(self):
|
|
orbit = self.circle
|
|
orgin_point = self.orgin_point
|
|
|
|
dot = Dot(radius=0.08, color=YELLOW)
|
|
dot.move_to(orbit.point_from_proportion(0))
|
|
self.t_offset = 0
|
|
rate = 0.25
|
|
|
|
def go_around_circle(mob, dt):
|
|
self.t_offset += (dt * rate)
|
|
# print(self.t_offset)
|
|
mob.move_to(orbit.point_from_proportion(self.t_offset % 1))
|
|
|
|
def get_line_to_circle():
|
|
return Line(orgin_point, dot.get_center(), color=BLUE)
|
|
|
|
def get_line_to_curve():
|
|
x = self.curve_start[0] + self.t_offset * 4
|
|
y = dot.get_center()[1]
|
|
return Line(dot.get_center(), np.array([x,y,0]), color=YELLOW_A, stroke_width=2 )
|
|
|
|
|
|
self.curve = VGroup()
|
|
self.curve.add(Line(self.curve_start,self.curve_start))
|
|
def get_curve():
|
|
last_line = self.curve[-1]
|
|
x = self.curve_start[0] + self.t_offset * 4
|
|
y = dot.get_center()[1]
|
|
new_line = Line(last_line.get_end(),np.array([x,y,0]), color=YELLOW_D)
|
|
self.curve.add(new_line)
|
|
|
|
return self.curve
|
|
|
|
dot.add_updater(go_around_circle)
|
|
|
|
origin_to_circle_line = always_redraw(get_line_to_circle)
|
|
dot_to_curve_line = always_redraw(get_line_to_curve)
|
|
sine_curve_line = always_redraw(get_curve)
|
|
|
|
self.add(dot)
|
|
self.add(orbit, origin_to_circle_line, dot_to_curve_line, sine_curve_line)
|
|
self.wait(8.5)
|
|
|
|
dot.remove_updater(go_around_circle)
|