I have a line with a couple of numbers that I would like to use to generate a 1-dimensional “height” curve. ThreeJS has some excellent abstractions for dealing with curves–in particular, getSpacedPoints
of the Curve
class makes it easy to get evenly spaced segments along any curve.
For exampe, SplineCurve
is a Curve<Vector2>
and CatmullRomCurve3
is a Curve<Vector3>
. These are almost what I need, but they actually do too much by operating in 2 or 3 dimensions. Apparently, the parametric type T of Curve<T>
must be a Vector
. Is there a way to create a Curve<Vector1>
somehow?
(There is no Vector1
class in threejs, so I guess I’m looking for alternative ways to think about it or implement such a Curve
…)
Hi!
Vector1
is just a number of float or integer 
How does that curve have to look like? Any explanatory picture?
three.js
always renders in 3D. When you have 2D curve definition, the data are usually defined in the XY plane which means the Z coordinate is always zero.
In the 1D case that means Y is zero, too. Such you just have values along the (1,0,0) cardinal axis which means you end up with a simple line. Is that what you are looking for?
1 Like
Vector1
is just a number of float or integer
Yeah, that’s why it’s weird that T is constrained to be a Vector subtype in Curve<T>
.
How does that curve have to look like? Any explanatory picture?
Here’s a sample from the app I’m writing. A 2D curve is the path of the text, while a 1D curve is needed to calculate the height of the text at each point along the curve:
I had originally used a Vector3 to combine it (using the Z value to represent height) but it turned out that overloading the Z value in this way made laying out the text slightly distorted in some cases.
In the 1D case that means Y is zero, too. Such you just have values along the (1,0,0) cardinal axis which means you end up with a simple line. Is that what you are looking for?
Yes, I ended up using a SplineCurve and ignoring the Y value (setting all control point Y values to 0).
1 Like