从贝塞尔曲线到点的垂直线

问题描述 投票:0回答:1

问题

我需要得到Q(三次)贝塞尔曲线的点[[Q B(t),其中从点[[Q到另一个给定点的线 P 垂直相交与贝塞尔曲线。

我知道:
    P
  • B(t)
  • 我正在寻找:Q(基本上我希望具有
  • g
  • 的斜率,但是当我知道Q时我可以轻松地计算出这个斜率,但是g的斜率是足够)

    我到目前为止所做的(您可以跳过此操作)


    请注意,我认为此ansatz是错误的。仅出于完整性目的而包括在内。
    我试图用我的数学基础知识解决这个问题,但我无法完成。这就是我现在所拥有的(请对符号不要太严格,我对此不太好):

    以下公式将表示为

    y(x)

    ,以获得一个结果,该结果必须针对

    y(x)

    and x(y)计算。 P点是控制点,Q是从QP的线g(x)在贝塞尔曲线< [B(t)=(x,y)Tg(x)行的表达式可以通过检索其中B(x)是笛卡尔坐标中的贝塞尔曲线,

    B'(x)

    导数(在笛卡尔坐标中),

    k是与y轴的交点。要获得g(x)的斜率,必须求解

    要计算B(x),必须对

    t求解

    B [t],然后将其重新插入B(t)。因此,在贝塞尔曲线上的每个点都存在以下关系:

    也适用于导数

    B

    '(t)。

    B(t)

    的导数为(根据wikipedia

    将其求解为t(with wolfram alpha)得到

    其中

    a

    0

    =(

    P 1

    -P 0)[[x,a 1] > =(P 2]-P 1)[[xa 2 =(P 3] >-P 2
    x。将* t i * s重新插入B(t)会导致(wolfram alpha for t1wolfram alpha for t2wolfram alpha for t3
    现在,下一件事是使用y = B'(x)和第二个等式并消除x,但我不知道该怎么做,我什至不知道这样做是否可行。 问题我需要得到三次(2d)贝塞尔曲线B(t)的点Q,从点Q到另一个给定点P的线与贝塞尔曲线垂直相交。我知道:P,B(t)我看起来...

    您已经知道贝塞尔曲线的导数-它描述了曲线的切线。该切线应垂直于QP向量。因此,此时您需要写出向量PQ和切线向量T的两个分量

    PQx = 3*(1-t)^3 * P0.x + ... - P.x PQy = 3*(1-t)^3 * P0.y + ... - P.y Tx = 3*(1-t)^2 * (P1.x - P0.x).... and so on Ty = ....

    并对向量T和QP的点积求方程(对于垂直向量,点积为零:]
    PQx * Tx + PQy * Ty = 0
    现在打开方括号,得到未知t

    5-th

    度方程。
    这种多项式方程没有封闭形式的解决方案,因此您需要某种数值root-finding algorithm(使用那些用于多项式根的数值)

    geometry computational-geometry intersection bezier cubic-bezier
    1个回答
    1
    投票
    现在打开方括号,得到未知t

    5-th

    © www.soinside.com 2019 - 2024. All rights reserved.