manim 取直线外的一个动点作直线的垂线段
时间: 2023-11-20 19:11:29 浏览: 41
以下是一个示例代码,其中 `start` 和 `end` 表示直线的两个端点,`point` 表示直线外的动点:
```python
class PerpendicularLine(VMobject):
def __init__(self, start, end, point, **kwargs):
super().__init__(**kwargs)
self.start = np.array(start)
self.end = np.array(end)
self.point = np.array(point)
self.add(Line(start, end))
self.add(DashedLine(point, self.get_projection(point)))
def get_projection(self, point):
d = self.end - self.start
v = point - self.start
return self.start + np.dot(v, d) / np.dot(d, d) * d
```
使用时可以像这样:
```python
line = Line(start=[-3, 0, 0], end=[3, 0, 0])
point = [-2, 2, 0]
perp_line = PerpendicularLine(start=line.get_start(), end=line.get_end(), point=point)
```
其中 `perp_line` 就是所求的垂线段。