gpt4 book ai didi

cairo - 不知道4个点怎么画曲线?

转载 作者:行者123 更新时间:2023-12-03 03:39:47 28 4
gpt4 key购买 nike

根据cairo example code ,以下代码

double x=25.6,  y=128.0;
double x1=102.4, y1=230.4,
x2=153.6, y2=25.6,
x3=230.4, y3=128.0;

cairo_move_to (cr, x, y);
cairo_curve_to (cr, x1, y1, x2, y2, x3, y3);

cairo_set_line_width (cr, 10.0);
cairo_stroke (cr);

cairo_set_source_rgba (cr, 1, 0.2, 0.2, 0.6);
cairo_set_line_width (cr, 6.0);
cairo_move_to (cr,x,y); cairo_line_to (cr,x1,y1);
cairo_move_to (cr,x2,y2); cairo_line_to (cr,x3,y3);
cairo_stroke (cr);

可以生成曲线和两条粉色线。

enter image description here

但这需要 4 个点,(x,y)、(x1,y1)、(x2,y2)、(x3,y3)

如果我只有 x,y 和 x3, y3(曲线的起点和终点),在不知道 x1,y1 和 x2,y2 的情况下是否有任何数学公式可以生成这些粉红色线?

编辑:

针对我通过以下方式生成曲线的情况。

cairo_move_to (cr, x, y);
cairo_curve_to (cr, x, y3, x3, y, x3, y3);

最佳答案

只是提出要点:

  • 从两个已知点开始:(x1,y1) 和 (x3,y3 ):

enter image description here

  • 连接两行:

enter image description here

  • P2 创建为 P1P3:

enter image description here

  • 现在顺时针旋转P3 90°:

enter image description here

  • P4进行同样的操作,在P1P<之间创建它/strong>3:

enter image description here

  • 顺时针旋转P4 90°:

enter image description here

  • 现在您有了四个点,可以绘制贝塞尔曲线:

enter image description here

<小时/>

中点可以计算为:

P = (x1+x3)/2 , (y1 +y3)/2

double x1=25.6,  y1=128.0;
double x3=153.6, y3=25.6;

double xm = (x1+x3)/2;
double ym = (y1+y3)/2;

//rotate Pm by 90degrees around p1 to get p2
double x2 = -(ym-y1) + y1;
double y2 = (xm-x1) + x1;

//rotate Pm by 90degrees around p3 to get p4
double x4 = -(ym-y3) + y3;
double y4 = (xm-x3) + x3;

关于cairo - 不知道4个点怎么画曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com