vanpn

07-16-2008, 10:27 PM

I have a cubic spline C. How can i calculate tangent vector of each vertex on the curve ?

View Full Version : how to calculate tangent vector for each vertex ?

vanpn

07-16-2008, 10:27 PM

I have a cubic spline C. How can i calculate tangent vector of each vertex on the curve ?

dletozeun

07-17-2008, 12:18 AM

This topic is not a "Opengl advanced coding" one but a "Math and algorithm" one.

Anyway, as far as I know splines are parametrized curves, you should be able to compute some derivatives easily.

Anyway, as far as I know splines are parametrized curves, you should be able to compute some derivatives easily.

Ilian Dinev

07-17-2008, 11:56 AM

Current vertex: B, its adjacent vertices: A and C.

vector U is B->A,

vector V is B->C

vector M is UxV (cross-product)

vector N = normalize(M)

Done

vector U is B->A,

vector V is B->C

vector M is UxV (cross-product)

vector N = normalize(M)

Done

dletozeun

07-17-2008, 12:25 PM

vector U is B->A,

vector V is B->C

vector M is UxV (cross-product)

vector N = normalize(M)

Done

$> run

ERROR: "tangent is needed, not normal"

$>

vector V is B->C

vector M is UxV (cross-product)

vector N = normalize(M)

Done

$> run

ERROR: "tangent is needed, not normal"

$>

Ilian Dinev

07-17-2008, 02:25 PM

And isn't that tangent vector at 90 degrees of the normal?

As in

vec2 T = N.yx

As in

vec2 T = N.yx

Dj3hut1

07-18-2008, 12:02 AM

Hello,

if I'm not wrong the tangent vector would be simply C-B along the curve.

dj3hut1

if I'm not wrong the tangent vector would be simply C-B along the curve.

dj3hut1

dletozeun

07-18-2008, 12:35 AM

And isn't that tangent vector at 90 degrees of the normal?

As in

vec2 T = N.yx

vec2 ?? :eek:

Anyway, there is a more intelligent way to compute these tangents since to draw this spline ( defined with control points a several tangents) you have to interpolate tangents and then generate points .

vanpn just need to read theory about cubic splines.

As in

vec2 T = N.yx

vec2 ?? :eek:

Anyway, there is a more intelligent way to compute these tangents since to draw this spline ( defined with control points a several tangents) you have to interpolate tangents and then generate points .

vanpn just need to read theory about cubic splines.

vanpn

07-20-2008, 05:30 AM

Thanks, I'm reading it right now. >_<

From the beginning, I used gluNurbs to draw the curve, but I can't retrieve the coordinates of each vertex on the curve. So maybe I have to compute and draw it manually. Too bad!

It's a part of my thesis and the deadline is near. >_<

From the beginning, I used gluNurbs to draw the curve, but I can't retrieve the coordinates of each vertex on the curve. So maybe I have to compute and draw it manually. Too bad!

It's a part of my thesis and the deadline is near. >_<

Zengar

07-20-2008, 07:45 AM

The tangent vector of the curve in the point x is equal to the value of the first derivative of the curve's equation. And evaluating the cubic spline is an elemetary computational task (just copy the formula from the wikipedia). Have fun :)

vanpn

07-20-2008, 11:07 PM

Do u mean this formular :

(________________)[-1 3 -3 1 ][pi-1]

Si(t)=[t^3t^2t1](1/6)[ 3 -6 3 0 ][pi]

(________________)[-3 0 3 0 ][pi+1]

(________________)[ 1 4 1 0 ][pi+2]

This is the uniform cubic b-spline with knot vector, matrix-form, from http://en.wikipedia.org/wiki/B-spline

(________________)[-1 3 -3 1 ][pi-1]

Si(t)=[t^3t^2t1](1/6)[ 3 -6 3 0 ][pi]

(________________)[-3 0 3 0 ][pi+1]

(________________)[ 1 4 1 0 ][pi+2]

This is the uniform cubic b-spline with knot vector, matrix-form, from http://en.wikipedia.org/wiki/B-spline

Zengar

07-21-2008, 03:30 AM

For example...

vanpn

07-25-2008, 07:49 AM

I have calculated and retrieved every point on the cubic spline C. I have 1st derivative of basis functions for each point too. So, if i want to get tangent vector, what do i have to do ?

Calculate dx, dy based on 1st derivatives of basis functions and then atan(dy/dx) or what ?

Please tell me!

Calculate dx, dy based on 1st derivatives of basis functions and then atan(dy/dx) or what ?

Please tell me!

Zengar

07-25-2008, 08:15 AM

You are in 3D space. So the cubic spline equation p(t) gives you a vector in each point t. This vector is the position. Now, the first derivative p'(t) is the tangent in t.

oc2k1

07-25-2008, 07:13 PM

The dimension of the points isn't important, because the spline interpolation defines only rules to mix four of them.

Tangents are simple too: Instead a Cubic spline the difference of two quadric splines (with one point offset)

That shader code may help:

http://lumina.sourceforge.net/Tutorials/Bezier_Surface.html

Tangents are simple too: Instead a Cubic spline the difference of two quadric splines (with one point offset)

That shader code may help:

http://lumina.sourceforge.net/Tutorials/Bezier_Surface.html

vanpn

07-26-2008, 02:06 AM

I see.

atan(dy/dx) and i got the angle. from that i can have tangent line at each point of the curve.

atan(dy/dx) and i got the angle. from that i can have tangent line at each point of the curve.

Powered by vBulletin® Version 4.2.3 Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.