mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
Revert "Lighthouse now also stable under camera rotations"
This reverts commit 75fd78cefc
.
This commit is contained in:
parent
3b99207172
commit
b0d9a1eaac
1 changed files with 5 additions and 21 deletions
|
@ -183,14 +183,8 @@ class LightSource(VMobject):
|
||||||
self.spotlight.radius = new_radius
|
self.spotlight.radius = new_radius
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
|
|
||||||
M = z_to_vector(self.spotlight.projection_direction())
|
|
||||||
R = np.array([[0,-1,0],[1,0,0],[0,0,1]])
|
|
||||||
self.rotation_matrix = np.dot(M,R)
|
|
||||||
|
|
||||||
self.spotlight.update_sectors()
|
self.spotlight.update_sectors()
|
||||||
self.update_shadow()
|
self.update_shadow()
|
||||||
self.update_lighthouse()
|
|
||||||
|
|
||||||
def get_source_point(self):
|
def get_source_point(self):
|
||||||
return self.source_point.get_location()
|
return self.source_point.get_location()
|
||||||
|
@ -212,10 +206,8 @@ class LightSource(VMobject):
|
||||||
np.reshape(projected_source,(1,3)),
|
np.reshape(projected_source,(1,3)),
|
||||||
axis = 0
|
axis = 0
|
||||||
)
|
)
|
||||||
rotation_matrix_here = z_to_vector(self.spotlight.projection_direction())
|
rotation_matrix = z_to_vector(self.spotlight.projection_direction())
|
||||||
# self.rotation matrix contains an extra 90 degree rotation
|
back_rotation_matrix = rotation_matrix.T # i. e. its inverse
|
||||||
# (this is apparently necessary to orient the lighthouse)
|
|
||||||
back_rotation_matrix = rotation_matrix_here.T # i. e. its inverse
|
|
||||||
|
|
||||||
rotated_point_cloud_3d = np.dot(projected_point_cloud_3d,back_rotation_matrix.T)
|
rotated_point_cloud_3d = np.dot(projected_point_cloud_3d,back_rotation_matrix.T)
|
||||||
# these points now should all have z = 0
|
# these points now should all have z = 0
|
||||||
|
@ -240,7 +232,7 @@ class LightSource(VMobject):
|
||||||
|
|
||||||
hull_mobject = VMobject()
|
hull_mobject = VMobject()
|
||||||
hull_mobject.set_points_as_corners(hull)
|
hull_mobject.set_points_as_corners(hull)
|
||||||
hull_mobject.apply_matrix(rotation_matrix_here)
|
hull_mobject.apply_matrix(rotation_matrix)
|
||||||
|
|
||||||
|
|
||||||
anchors = hull_mobject.get_anchors()
|
anchors = hull_mobject.get_anchors()
|
||||||
|
@ -266,13 +258,6 @@ class LightSource(VMobject):
|
||||||
self.shadow.mark_paths_closed = True
|
self.shadow.mark_paths_closed = True
|
||||||
|
|
||||||
|
|
||||||
def update_lighthouse(self):
|
|
||||||
|
|
||||||
new_lh = Lighthouse().move_to(ORIGIN)
|
|
||||||
new_lh.apply_matrix(self.rotation_matrix)
|
|
||||||
new_lh.shift(self.get_source_point())
|
|
||||||
self.lighthouse.submobjects = new_lh.submobjects
|
|
||||||
|
|
||||||
|
|
||||||
class SwitchOn(LaggedStart):
|
class SwitchOn(LaggedStart):
|
||||||
CONFIG = {
|
CONFIG = {
|
||||||
|
@ -312,7 +297,6 @@ class Lighthouse(SVGMobject):
|
||||||
|
|
||||||
def move_to(self,point):
|
def move_to(self,point):
|
||||||
self.next_to(point, DOWN, buff = 0)
|
self.next_to(point, DOWN, buff = 0)
|
||||||
return self
|
|
||||||
|
|
||||||
|
|
||||||
class AmbientLight(VMobject):
|
class AmbientLight(VMobject):
|
||||||
|
@ -407,14 +391,14 @@ class AmbientLight(VMobject):
|
||||||
class Spotlight(VMobject):
|
class Spotlight(VMobject):
|
||||||
|
|
||||||
CONFIG = {
|
CONFIG = {
|
||||||
"source_point" : VectorizedPoint(location = ORIGIN, stroke_width = 0, fill_opacity = 0),
|
"source_point": VectorizedPoint(location = ORIGIN, stroke_width = 0, fill_opacity = 0),
|
||||||
"opacity_function" : lambda r : 1.0/(r/2+1.0)**2,
|
"opacity_function" : lambda r : 1.0/(r/2+1.0)**2,
|
||||||
"color" : LIGHT_COLOR,
|
"color" : LIGHT_COLOR,
|
||||||
"max_opacity" : 1.0,
|
"max_opacity" : 1.0,
|
||||||
"num_levels" : 10,
|
"num_levels" : 10,
|
||||||
"radius" : 5.0,
|
"radius" : 5.0,
|
||||||
"screen" : None,
|
"screen" : None,
|
||||||
"camera" : None
|
"camera": None
|
||||||
}
|
}
|
||||||
|
|
||||||
def projection_direction(self):
|
def projection_direction(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue