![](/img/trans.png)
[英]connectionstyle arc3 (FancyArrowPatch) and path CURVE3 - two quadratic Bezier curves, different outcomes?
[英]Why does this generate two different Bezier curves despite having the same anchors/handles (manim)?
我試圖在同一場景中有兩條相同的貝塞爾曲線,一條有末端,另一個有起始末端,但盡管具有相同的錨點和手柄,但貝塞爾曲線的表現卻有所不同。 我知道我可以將兩個提示添加到同一個 Bezier 曲線,但要將圖形集成到我現有的代碼中(使其動畫化),我需要將它們分開。 演示問題的示例代碼如下:
from manimlib.imports import *
class Testing3(Scene):
def construct(self):
coords_list=[0.818*UP+.9*UP, -2*RIGHT+((1/6-19/36)*np.sqrt(3))*UP+.9*UP]
node_list=[]
for i in range(2):
mobject = VMobject()
number = TexMobject(str(i+1))
circle = Circle(radius=0.4,color=WHITE)
mobject.add(number)
mobject.add(circle)
mobject.move_to(coords_list[i])
node_list.append(mobject)
arc1=TipableVMobject()
arc1.add_cubic_bezier_curve(
node_list[1].get_center(),
node_list[1].get_center()-3*RIGHT+2*UP,
node_list[1].get_center()-2*RIGHT+5.2*UP,
node_list[0].get_center()
)
arc1.pointwise_become_partial(
arc1,
0.4/arc1.get_arc_length(n_sample_points=20),
1-0.2/arc1.get_arc_length(n_sample_points=100)
)
arc1.add_tip(tip_length=0.2)
arc2=TipableVMobject()
arc2.add_cubic_bezier_curve(
node_list[1].get_center(),
node_list[1].get_center()-3*RIGHT+2*UP,
node_list[1].get_center()-2*RIGHT+5.2*UP,
node_list[0].get_center()
)
arc2.pointwise_become_partial(
arc2,
0.4/arc2.get_arc_length(n_sample_points=20),
1-0.2/arc2.get_arc_length(n_sample_points=100)
)
arc2.add_tip(tip_length=0.2,at_start=True)
self.add(*node_list,arc1,arc2)
self.wait()
我曾嘗試制作貝塞爾曲線的副本,但它產生了相同的結果。
目前我只能這樣做:
class Testing3(Scene):
def construct(self):
coords_list=[0.818*UP+.9*UP, -2*RIGHT+((1/6-19/36)*np.sqrt(3))*UP+.9*UP]
node_list=[]
for i in range(2):
mobject = VMobject()
number = TexMobject(str(i+1))
circle = Circle(radius=0.4,color=WHITE)
mobject.add(number)
mobject.add(circle)
mobject.move_to(coords_list[i])
node_list.append(mobject)
arc1=TipableVMobject()
arc1.add_cubic_bezier_curve(
node_list[1].get_center(),
node_list[1].get_center()-3*RIGHT+2*UP,
node_list[1].get_center()-2*RIGHT+5.2*UP,
node_list[0].get_center()
)
arc1.pointwise_become_partial(
arc1,
0.4/arc1.get_arc_length(n_sample_points=20),
1-0.2/arc1.get_arc_length(n_sample_points=100)
)
arc1.add_tip(tip_length=0.2,
#at_start=True
)
arc1.add_tip(tip_length=0.2,
at_start=True
)
arc1.set_color(RED)
arc2=TipableVMobject()
arc2.add_cubic_bezier_curve(
node_list[1].get_center(),
node_list[1].get_center()-3*RIGHT+2*UP,
node_list[1].get_center()-2*RIGHT+5.2*UP,
node_list[0].get_center()
)
arc2.pointwise_become_partial(
arc2,
0.4/arc2.get_arc_length(n_sample_points=20),
1-0.2/arc2.get_arc_length(n_sample_points=100)
)
arc2.add_tip(tip_length=0.2,
#at_start=True
)
arc2.add_tip(tip_length=0.2,
at_start=True
)
arc2.set_color(BLUE)
arc1.remove(arc1[-2])
arc2.remove(arc2[-1])
self.add(*node_list,arc1)
self.wait()
self.add(arc2)
self.wait()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.