What's wrong with my idea to reconstruct 3d curve by tangent vector?

103 Views Asked by At

The question:

There is a parametric curve $r(u) = [x(u), y(u), z(u)]$ in $\Bbb{R^3}$ , where the parameter is $u$; $x(u), y(u)$ and $z(u)$ are Cartesian coordinates.

The known conditions:

  1. $\left|\left|\frac{dr(u)}{du}\right|\right|$ is not always 1, but we don't know the formula or value
  2. tangent vector $T$ along the curve length $L$. In my real case, $T$ is discrete data depends on discrete curve length. But here, $T$ and $L$ are expressed as function of $u$. So if the interval of $u$ is $1.20$, the discrete array is supplied as: $$ \begin{array} \text {i} & \text{u} & \text{curve length L(u)} & \text{tangent vector T} \\ \hline 0 & 0.00 & L(0.00) & T(0.00) \\ 1 & 1.20 & L(1.20) & T(1.20) \\ 2 & 2.40 & L(2.40) & T(2.40) \\ ... & ... & ... & ... \\ i & 1.20*i & L(1.20*i) & T(1.20*i) \end{array} $$

For example, $$ L(u) = \frac{1}{4}\int_0^u \sqrt{sin^2t+1} \; dt\,, where\, u = 0.00, 1.20, ..., 1.20*i $$ and $$ T(u) = \left[\frac{1}{\sqrt{\sin^2(u)+1}}, \; \frac{-\sin^2(u)}{\sqrt{\sin^2(u)+1}}, \; 0\right],\, where\, u = 0.00, 1.20, ..., 1.20*i $$ Please think that these two formula $T(u)$ and $L(u)$ are gotten by curve fitting, guess or some steps else. Although you may gain an insight and find that the real curve is $r(u) = \frac14[u, \cos(u)-1, 0]$, but please prevent that you don't know the formula because the discrete of $r(u) = \frac14[u, \cos(u)-1, 0]$ is what I want to find finally

  1. Initial $r(0) = [0, 0, 0]$

The goal: to reconstruct the original curve. Since there is only discrete date, the reconstructed curve must be expressed in a discrete manner in no matter $u$ or $L$ interval. For example, I thought the interval of $u$ is $0.11$( which is different from and smaller than the above $1.20$), then the reconstructed curve is deduced as

$r(0.00) = [x(0.00), y(0.00), z(0.00)]$

$r(0.11) = [x(0.11), y(0.11), z(0.11)]$

$r(0.22) = [x(0.22), y(0.22), z(0.22)]$

... ...

$r(0.11*i) = [x(0.11*i), y(0.22), z(0.22)]$

, where $r(0.00)$ is given value in above as $r(0) = [0, 0, 0]$

I think I can use

$$ r(\mathrm{next}_u) = r(\mathrm{current}_u) + \Delta u\,T(\mathrm{current}_u) $$ so I calculate

$$ r(0.11) = r(0) + 0.11\,T(0) = [0, 0, 0] + 0.11\,[1, 0, 0] = [0.11, 0, 0] $$

but the answer is too far from the real situation, which is

$$ \text{real value: }r(0.11) = \frac14[ 0.11,\cos(0.11)-1, 0] \approx [0.0275, -0.001511, 0] $$

so, what have I missed? Maybe I should choose the interval along curve length.

BTW, my question actually tries to use the $T$ from Frenet Frame. In some papers, it is declared that the tangent $T$ can be use to reconstruct the shape. For example, Shape sensing using multi-core fiber optic cable and parametric curve solutions, by Jason P. Moore.

1

There are 1 best solutions below

0
On

Ok, maybe I solve the problem in my previous post. The further thought should be

  1. how to implement on PC efficiently.
  2. how to get a more precise discrete answer.

\color{red}{In my previous post, I used $\Delta u\cdot\,T(\mathrm{current}_u)$, which made the mistake.}

it should be

$$ r(\mathrm{next}_u) = r(\mathrm{current}_u) + \Delta L\cdot\,T(\mathrm{current}_u) $$

so I calculate

$$ r(0.11) = r(0) + (L(0.11) \, - \, L(0))\,T(0) = [0, 0, 0] + 0.02756\,[1, 0, 0] = [0.02756, 0.00000, 0.00000] $$

$$ r(0.22) = r(0.22) + (L(0.22) \, - \, L(0.11))\,T(0) = [0.05527, -0.00304, 0.00000] $$

so, the current answer is

$$ \begin{array} \text {u} & \text{curve length L(u)} &\text{calculated r(u)} & \text{real r(u)} \\ \hline 0.00 & 0.000 & [0.00000, 0.00000, 0.00000] & [0.00000, 0.00000, 0.00000] \\ 0.11 & 0.028 & [0.02756, 0.00000, 0.00000] & [0.02750, -0.00151, 0.00000] \\ 0.22 & 0.055 & [0.05527, -0.00304, 0.00000] & [0.05500, -0.00603, 0.00000] \\ 0.33 & 0.084 & [0.08312, -0.00912, 0.00000] & [0.08250, -0.01349, 0.00000] \\ ... & ... & ... & ... \\ 2.86 & 0.884 & [0.71567, -0.48578, 0.00000] & [0.71500, -0.49015, 0.00000] \end{array} $$