【Tips】線形補間【JavaScript】【Processing】
二点間を指定数分、線形補間し、指定した点を返す
JavaScript
function createInterpolatedPosition (id, numDivision, start, end) { return { x : start.x + id * (end.x - start.x) / numDivision, y : start.y + id * (end.y - start.y) / numDivision }; }
Processing
Point createInterpolatedPosition (int id, int numDivision, Point start, Point end) { return new Point( start.x + id * (end.x - start.x) / numDivision, start.y + id * (end.y - start.y) / numDivision ); }
【Example】
JavaScript
var point1, point2, num; point1 = { x : 0, y : 0 }; point2 = { x : 50, y : 50 }; num = 2; for (var i = 0, length_i = num; i < length_i; i++) { var point = createInterpolatedPosition(i, num, point1, point2); console.log(point) } function createInterpolatedPosition (id, numDivision, start, end) { return { x : start.x + id * (end.x - start.x) / numDivision, y : start.y + id * (end.y - start.y) / numDivision }; }
Processing
Point point1, point2; int num = 2; void setup() { point1 = new Point(0.0, 0.0); point2 = new Point(50.0, 50.0); for (int i = 0, length_i = num; i <= length_i; ++i) { Point point = createInterpolatedPosition(i, num, point1, point2); println(point.x + ", " + point.y); } } void draw() { } Point createInterpolatedPosition (int id, int numDivision, Point start, Point end) { return new Point( start.x + id * (end.x - start.x) / numDivision, start.y + id * (end.y - start.y) / numDivision ); } class Point { float x = 0.0; float y = 0.0; Point (float _x, float _y) { x = _x; y = _y; } }
【参考URL】
http://ja.wikipedia.org/wiki/%E7%B7%9A%E5%BD%A2%E8%A3%9C%E9%96%93