P5Vector.lerp

(別名: p5.Vector.lerp)

def setup
  background(220)

  v1 = createVector(-100, 100, 0)
  v2 = createVector(100, 100, 0)
  v3 = P5Vector.lerp(v1, v2, 0.5)
  text(v3.toString, 10, 30, 70)
end
def setup
  @step = 0.01
  @amount = 0
end

def draw
  background(240)
  v0 = createVector(0, 0)
  v1 = createVector(mouseX, mouseY)
  v2 = createVector(90, 20)
  if @amount > 1 || @amount < 0
    @step *= -1
  end
  @amount += @step
  v3 = P5Vector.lerp(v1, v2, @amount)
  drawArrow(v0, v1, 'red')
  drawArrow(v0, v2, 'blue')
  drawArrow(v0, v3, 'purple')
end

# draw an arrow for a vector at a given base position
def drawArrow(base, vec, myColor)
  push do
    stroke(myColor)
    strokeWeight(3)
    fill(myColor)
    translate(base.x, base.y)
    line(0, 0, vec.x, vec.y)
    rotate(vec.heading)
    arrowSize = 7
    translate(vec.mag - arrowSize, 0)
    triangle(0, arrowSize / 2, 0, -arrowSize / 2, arrowSize, 0)
  end
end

p5.jsリファレンス(参考情報)

[p5.js] p5.Vector.lerp

概要

2つのベクトル間を線形補間した新たなベクトルを生成します。

書式

vec = P5Vector.lerp(v1, v2, amt)

引数

引数名内容備考オプションデフォルト値
v1ベクトル1p5vectorオブジェクト
v2ベクトル2p5vectorオブジェクト
amt補間量0~1

戻値

vec : 線形補間されたベクトル (p5vectorオブジェクト)

備考

P5Vector.slerpメソッドと異なり、ベクトルの大きさは補完されません

・オプションとして p5.jsでは第4引数に結果収録用ベクトルの指定ができますが、
 rbCanvas/p5ではその書式は採用していません。

関連

(p5vector).lerp
P5Vector.slerp