ぽちログ

プログラミング歴3年目元文系大学院生のぽちと申します。 とりあえずは自分用のメモなどを残して行くつもりですが、ご要望・意見・感想などを頂けたらそれによって内容も変化していくと思います。 よろしくお願いします。

【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