Published
Edited
Feb 11, 2019
1 star
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
/**
* Lineáris interpolációt számoló függvény.
* @param {vec2} p0 Az első kontrollpont.
* @param {vec2} p1 A második kontrollpont.
* @param {number} t A futó paraméter (0 <= t <= 1).
* @returns {vec2} A t-nek megfelelő görbepont.
*/
function f_LerpWithBlending(p0, p1, t) {
const sp0 = glMatrix.vec2.create()
glMatrix.vec2.scale(sp0, p0, -t + 1)
const sp1 = glMatrix.vec2.create()
glMatrix.vec2.scale(sp1, p1, t)
const result = glMatrix.vec2.create()
glMatrix.vec2.add(result, sp0, sp1)
return result
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
/**
* Lineáris interpolációt számoló függvény.
* @param {mat2} G A geometriai adatokat tartalmazó 2x2-es mátrix.
* @param {number} t A futó paraméter (0 <= t <= 1).
* @returns {vec2} A t-nek megfelelő görbepont.
*/
function f_LerpWithMatrices(G, t) {
const M = glMatrix.mat2.fromValues(
-1, 1,
1, 0
)
// C = G * M
const C = glMatrix.mat2.create()
glMatrix.mat2.multiply(C, G, M)
// result = C * T
const T = glMatrix.vec2.fromValues(t, 1)
const result = glMatrix.vec2.create()
glMatrix.vec2.transformMat2(result, T, C)
return result
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
/**
* Az Aitken_interpolacio képletet megvalósító függvény.
* @param {Array} points Az aktuális generáció pontjait tartalmazó tömb.
* @param {Array} parameters Az interpolációs feltételekhez tartozó paraméterértékek tömbje.
* @param {Number} t A futó paraméterérték.
* @param {Number} i Az index, hogy mely pontnál szeretnénk interpolációt végezni.
* @param {Number} k Az aktuális generáció indexe.
* @returns {vec2} A lineáris interpoláció eredménye.
*/
function f_AitkenInterpolateTwoPoints(points, parameters, t, i, k) {
const nevezo = parameters[i + k] - parameters[i]
const alfa = (parameters[i + k] - t) / nevezo
const beta = (t - parameters[i]) / nevezo
const sp0 = glMatrix.vec2.create()
glMatrix.vec2.scale(sp0, points[i], alfa)
const sp1 = glMatrix.vec2.create()
glMatrix.vec2.scale(sp1, points[i + 1], beta)
const result = glMatrix.vec2.create()
glMatrix.vec2.add(result, sp0, sp1)
return result
}
Insert cell
Insert cell
/**
* Az Aitken-algoritmus egy generációját kiszámító függvény.
* @param {Array} points Az aktuális generáció pontjait tartalmazó tömb.
* @param {Array} parameters Az interpolációs feltételekhez tartozó paraméterértékek tömbje.
* @param {Number} t A futó paraméterérték.
* @param {Number} k Az aktuális generáció indexe.
* @returns {Array} A következő generáció pontjait tartalmazó tömb.
*/
function f_AitkenCalculateGeneration(points, parameters, t, k) {
const result = []
for (let i = 0; i < points.length - 1; ++i) {
result.push(f_AitkenInterpolateTwoPoints(points, parameters, t, i, k))
}
return result
}
Insert cell
Insert cell
/**
* Az Aitken-algoritmus t paraméterértékhez tartozó görbepontját kiszámító függvény.
* @param {Array} points Az aktuális generáció pontjait tartalmazó tömb.
* @param {Array} parameters Az interpolációs feltételekhez tartozó paraméterértékek tömbje.
* @param {Number} t A futó paraméterérték.
* @returns {Array} A t-hez tartozó görbepont.
*/
function f_AitkenInterpolation(controlPoints, parameters, t) {
// Lemásoljuk a controlPoints tömböt, hogy ne az eredetin végezzünk módosításokat.
let points = controlPoints.slice()
// Ha már csak egy pont van, akkor az algoritmus leáll -> az lesz az f(t) görbepont.
while (points.length > 1) {
const generation = controlPoints.length - points.length + 1
points = f_AitkenCalculateGeneration(points, parameters, t, generation)
}
return points[0]
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more