lerp
Definition
-- @/lua/common/mathlib.lua:1193
function lerp(from, to, t)
return from + (to - from) * t -- monotonic
end
Callers
@/lua/ge/extensions/flowgraph/nodes/util/perlinNoise.lua
-- Take the weighted average between all 8 unit cube coordinates
return self.lerp(w,
self.lerp(v,
return self.lerp(w,
self.lerp(v,
self.lerp(u,
self.lerp(v,
self.lerp(u,
self:grad(AAA,x,y,z),
),
self.lerp(u,
self:grad(ABA,x,y-1,z),
),
self.lerp(v,
self.lerp(u,
self.lerp(v,
self.lerp(u,
self:grad(AAB,x,y,z-1), self:grad(BAB,x-1,y,z-1)
),
self.lerp(u,
self:grad(ABB,x,y-1,z-1), self:grad(BBB,x-1,y-1,z-1)
function C.lerp(t, a, b)
return a + t * (b - a)
@/lua/vehicle/ai.lua
if ego.pos:squaredDistance(linePointFromXnorm(p1Pos, plan[i+2].pos, nextXnorm)) <
square(ego.width + lerp(p1Radius, plan[i+2].radiusOrig, min(1, nextXnorm))) then
egoXnormOnSeg = nextXnorm
local rad1, rad2 = mapData:getEdgeRadii(wp1, wp2)
local rad = lerp(rad2, rad1, xnorm)
if xnorm >= 0 and xnorm <= 1 and sqDist <= square(2 * rad) then
local rad1, rad2 = mapData:getEdgeRadii(wp1, wp2)
local rad = lerp(rad2, rad1, xnorm)
posOrig = linePointFromXnorm(pos2, pos1, xnorm)
if rsLong > 0 then -- time to overtake v
TTO = (2 * ego.length * lerp(1, lerp(0.5, 0, backAwereness), xnormL) + (xnormF < 0 and v.length or 0)) / (rsLong + 1e-30)
else -- time to be overtaken by v
if rsLong > 0 then -- time to overtake v
TTO = (2 * ego.length * lerp(1, lerp(0.5, 0, backAwereness), xnormL) + (xnormF < 0 and v.length or 0)) / (rsLong + 1e-30)
else -- time to be overtaken by v
else -- time to be overtaken by v
TTO = (2 * ego.length * lerp(0.5, 1, backAwereness) * xnormL + (xnormF > 0 and v.length or 0)) / (-rsLong + 1e-30)
end
-- player xnorm and ego xnorm get interpolated here
local tarPos = playerNodePos1 + targetLineDir * clamp(lerp(xnorm1, xnorm2, 0.5), -radii[plwp2], radii[plwp2])
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalLine.lua
data.position = lerp(a, b, t)
data.forwardVec = fwd
@/lua/ge/extensions/gameplay/traffic/trafficUtils.lua
local xnorm = clamp(pos:xnormOnLine(p1, p2), 0, 1)
local radius = lerp(mapNodes[mapNode1].radius, mapNodes[mapNode2].radius, xnorm)
local normal = mapNodes[mapNode1].normal:slerp(mapNodes[mapNode2].normal, xnorm):normalized()
@/lua/ge/client/postFx/dof.lua
-- rangeNear is done in two phases, so that it can be clamped with rangeFar
local rangeNearTemp = lerp(dofPostEffect.minRange, dofPostEffect.maxRange, fd) / farDist * 0.5
local rangeFar = lerp(dofPostEffect.maxRange, dofPostEffect.minRange, fd) / farDist * 0.5
local rangeNearTemp = lerp(dofPostEffect.minRange, dofPostEffect.maxRange, fd) / farDist * 0.5
local rangeFar = lerp(dofPostEffect.maxRange, dofPostEffect.minRange, fd) / farDist * 0.5
local rangeNear = clamp(rangeNearTemp, 0, rangeFar)
@/lua/ge/extensions/flowgraph/nodes/util/randomVector.lua
function C:work()
local x = lerp(self.pinIn.xMin.value or 0, self.pinIn.xMax.value or 0, math.random())
local y = lerp(self.pinIn.yMin.value or 0, self.pinIn.yMax.value or 0, math.random())
local x = lerp(self.pinIn.xMin.value or 0, self.pinIn.xMax.value or 0, math.random())
local y = lerp(self.pinIn.yMin.value or 0, self.pinIn.yMax.value or 0, math.random())
local z = lerp(self.pinIn.zMin.value or 0, self.pinIn.zMax.value or 0, math.random())
local y = lerp(self.pinIn.yMin.value or 0, self.pinIn.yMax.value or 0, math.random())
local z = lerp(self.pinIn.zMin.value or 0, self.pinIn.zMax.value or 0, math.random())
self.pinOut.vector.value = {x, y, z}
@/lua/ge/extensions/freeroam/bigMapMode.lua
local minMergeRadius = (camHeightAboveTerrain * camMode.fovMin) / 1000
M.clusterMergeRadius = lerp(minMergeRadius, maxMergeRadius, factor)
freeroam_bigMapMarkers.setupFilter(currentlyVisibleIds, M.clusterMergeRadius)
@/lua/ge/extensions/gameplay/drag/times.lua
elseif timer.type == "velocity" then
timer.value = lerp(racer.prevSpeed, racer.vehSpeed, t)
timer.isSet = true
@/lua/ge/extensions/editor/trafficManager.lua
local r1, r2 = mapData:getEdgeRadii(mapNode1, mapNode2)
local radius = lerp(r1, r2, xnorm)
-- calculate tentative spawn position as the road center line position closest to pos
@/lua/ge/extensions/flowgraph/nodes/math/math.lua
description = "Smoothly changes a value from one to another, according to a lerping parameter. a and b can be number, vec3 or quat, but need to be the same type.",
expression = "lerp(a,b,c)",
pinInfo = {
@/lua/ge/extensions/editor/toolUtilities/perlin.lua
return lerp(
lerp(grad(perm[AA], xf, yf), grad(perm[BA], xf - 1, yf), u),
return lerp(
lerp(grad(perm[AA], xf, yf), grad(perm[BA], xf - 1, yf), u),
lerp(grad(perm[AB], xf, yf - 1), grad(perm[BB], xf - 1, yf - 1), u),
lerp(grad(perm[AA], xf, yf), grad(perm[BA], xf - 1, yf), u),
lerp(grad(perm[AB], xf, yf - 1), grad(perm[BB], xf - 1, yf - 1), u),
v
@/lua/ge/extensions/flowgraph/nodes/gameplay/decalSingle.lua
for i = 1, 4 do
clr[i] = lerp(self.pinIn.clrA.value[i], self.pinIn.clrB.value[i], pingpong(os.clockhp() * self.pinIn.clrFrequency.value, 1))
end
@/lua/ge/extensions/flowgraph/nodes/util/randomQuaternion.lua
function C:work()
local x = lerp(math.rad(self.pinIn.xMinAngle.value or 0), math.rad(self.pinIn.xMaxAngle.value or 0), math.random())
local y = lerp(math.rad(self.pinIn.yMinAngle.value or 0), math.rad(self.pinIn.yMaxAngle.value or 0), math.random())
local x = lerp(math.rad(self.pinIn.xMinAngle.value or 0), math.rad(self.pinIn.xMaxAngle.value or 0), math.random())
local y = lerp(math.rad(self.pinIn.yMinAngle.value or 0), math.rad(self.pinIn.yMaxAngle.value or 0), math.random())
local z = lerp(math.rad(self.pinIn.zMinAngle.value or 0), math.rad(self.pinIn.zMaxAngle.value or 0), math.random())
local y = lerp(math.rad(self.pinIn.yMinAngle.value or 0), math.rad(self.pinIn.yMaxAngle.value or 0), math.random())
local z = lerp(math.rad(self.pinIn.zMinAngle.value or 0), math.rad(self.pinIn.zMaxAngle.value or 0), math.random())
@/lua/ge/extensions/editor/rallyEditor/measurementsTab.lua
local xnorm = pos_rayCast:xnormOnLine(bestP1.pos, bestP2.pos)
continuousPos = vec3(lerp(bestP1.pos, bestP2.pos, clamp(xnorm, 0, 1)))
end
local xnorm = targetPos:xnormOnLine(bestP1.pos, bestP2.pos)
local newPos = lerp(bestP1.pos, bestP2.pos, clamp(xnorm, 0, 1))
selectedMeasurement.points[self.draggedPointIndex] = vec3(newPos)
local xnorm = pos_rayCast:xnormOnLine(bestP1.pos, bestP2.pos)
continuousPos = vec3(lerp(bestP1.pos, bestP2.pos, clamp(xnorm, 0, 1)))
end
@/lua/ge/extensions/scenario/raceMarkers/overhead.lua
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
@/lua/ge/extensions/gameplay/drift/stuntZones/driftThrough.lua
else
lerpVecA = lerp(self.data.drawData.pointA, self.data.drawData.pointB, cooldownPerc / 100)
lerpVecB = lerp(self.data.drawData.pointC, self.data.drawData.pointD, cooldownPerc / 100)
lerpVecA = lerp(self.data.drawData.pointA, self.data.drawData.pointB, cooldownPerc / 100)
lerpVecB = lerp(self.data.drawData.pointC, self.data.drawData.pointD, cooldownPerc / 100)
debugDrawer:drawLineInstance(self.data.drawData.pointA, lerpVecA, gameplay_drift_stuntZones.getLineThickness(lerpVecA), gameplay_drift_stuntZones.getWhiteColor())
@/lua/ge/extensions/flowgraph/nodes/util/randomColor.lua
if self.pinIn.cuteColor.value then
local r, g, b = HSVtoRGB(math.random(), lerp(1, 0.7, square(math.random())), lerp(1, 0.7, square(math.random())))
self.pinOut.color.value = {r, g, b, a}
if self.pinIn.cuteColor.value then
local r, g, b = HSVtoRGB(math.random(), lerp(1, 0.7, square(math.random())), lerp(1, 0.7, square(math.random())))
self.pinOut.color.value = {r, g, b, a}
@/lua/ge/extensions/flowgraph/nodes/util/roadSegment.lua
end
self.pinOut.width.value = lerp(a.radius, b.radius, self.pinIn.xnorm.value or 0.5) * 2 -- updates at runtime due to xnorm
end
@/lua/ge/extensions/editor/toolUtilities/polygon.lua
for j = 1, lineSegGran do
tmp3:set(lerp(tmp1, tmp2, (j - 1) * lineSegGranInv)) -- Interpolate to increase line clarity on scene
tmp4:set(lerp(tmp1, tmp2, j * lineSegGranInv))
tmp3:set(lerp(tmp1, tmp2, (j - 1) * lineSegGranInv)) -- Interpolate to increase line clarity on scene
tmp4:set(lerp(tmp1, tmp2, j * lineSegGranInv))
tmp3.z = core_terrain.getTerrainHeight(tmp3) + lineRaiseHeight
@/lua/ge/extensions/gameplay/sites/location.lua
distance = distance,
pos = lerp(a.pos,b.pos, xnorm),
radius = lerp(a.radius,b.radius,xnorm)
pos = lerp(a.pos,b.pos, xnorm),
radius = lerp(a.radius,b.radius,xnorm)
}
@/lua/ge/extensions/core/multiSpawn.lua
local p1, p2 = mapNodes[n1].pos, mapNodes[n2].pos
local radius = lerp(mapNodes[n1].radius, mapNodes[n2].radius, xnorm)
@/lua/ge/extensions/scenario/raceMarkers/attention.lua
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
@/lua/ge/extensions/gameplay/sites/zone.lua
local t = i/steps
local p = lerp(cur, nex, t)
if core_terrain then
@/lua/ge/extensions/gameplay/race/segment.lua
local xnorm, distance = point:xnormDistanceToLineSegment(a.pos,b.pos)
local maxDistance = lerp(a.radius, b.radius, clamp(xnorm,0,1))
if distance < maxDistance then
@/lua/ge/extensions/gameplay/drift/destination.lua
local xnorm = vehData.pos:xnormOnLine(previousWaypointPos, nextWaypointPos)
remainingDist = remainingDist + lerp(previousWaypointPos, nextWaypointPos, xnorm):distance(nextWaypointPos)
if index < #extractedWaypoints then
@/lua/ge/extensions/gameplay/traffic/vehicle.lua
local activeRadius = lerp(160, 80, min(1, self.respawn.spawnValue)) -- based on spawn value (larger radius if value is smaller)
local extraRadius = self.focus.dist + max(0, (1 - self.focus.dist / 5) * 80) -- larger extra radius if player is at a low speed
local xnorm = clamp(self.pos:xnormOnLine(p1, p2), 0, 1)
local radius = lerp(mapNodes[n1].radius, mapNodes[n2].radius, xnorm)
tempPos:setLerp(p1, p2, xnorm)
@/lua/ge/extensions/editor/toolUtilities/geom.lua
if u >= 0.0 and u <= 1.0 and v >= 0.0 and v <= 1.0 then
return lerp(lerp(q[1].z, q[2].z, u), lerp(q[3].z, q[4].z, u), v)
end
if u >= 0.0 and u <= 1.0 and v >= 0.0 and v <= 1.0 then
return lerp(lerp(q[1].z, q[2].z, u), lerp(q[3].z, q[4].z, u), v)
end
if u >= 0.0 and u <= 1.0 and v >= 0.0 and v <= 1.0 then
return lerp(lerp(q[1].z, q[2].z, u), lerp(q[3].z, q[4].z, u), v)
end
-- Interpolate binormal and width
local bin = lerp(binormals[bestIdx], binormals[bestIdx + 1], bestT)
bin:normalize()
outPosns[ctr] = vec3(tmp0)
outTans[ctr] = lerp(tangents[iMinusOne], tangents[i], t)
outTans[ctr]:normalize()
outTans[ctr]:normalize()
outNormals[ctr] = lerp(normals[iMinusOne], normals[i], t)
outNormals[ctr]:normalize()
outPosns[ctr] = vec3(tmp0)
outTans[ctr] = lerp(tangents[iMinusOne], tangents[i], t)
outTans[ctr]:normalize()
outTans[ctr]:normalize()
outNormals[ctr] = lerp(normals[iMinusOne], normals[i], t)
outNormals[ctr]:normalize()
@/lua/ge/extensions/scenario/raceMarkers/singleHologramMarker.lua
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local t = clamp(self.colorTimer / self.colorLerpDuration,0,1)
local alpha = lerp(self.modeInfos[self.oldMode or 'default'].alpha, self.modeInfos[self.mode or 'default'].alpha, t)
local color = lerpColor(self.modeInfos[self.oldMode or 'default'].columnColor, self.modeInfos[self.mode or 'default'].columnColor, t)
local scalarThin = lerp(self.modeInfos[self.oldMode or 'default'].scalarThin, self.modeInfos[self.mode or 'default'].scalarThin, t)
local sideHeight = clamp(inverseLerp(60,180,distanceFromMarker),0,20)+1 +clamp(inverseLerp(1800,2040,distanceFromMarker),0,20)
@/lua/ge/extensions/editor/tech/roadArchitect/terraform.lua
if u >= 0 and u <= 1 and v >= 0 and v <= 1 then
return lerp(lerp(q[1].z, q[2].z, u), lerp(q[3].z, q[4].z, u), v)
end
if u >= 0 and u <= 1 and v >= 0 and v <= 1 then
return lerp(lerp(q[1].z, q[2].z, u), lerp(q[3].z, q[4].z, u), v)
end
if u >= 0 and u <= 1 and v >= 0 and v <= 1 then
return lerp(lerp(q[1].z, q[2].z, u), lerp(q[3].z, q[4].z, u), v)
end
@/lua/ge/map.lua
local l2n2rad = edges[edgeId][3].outRadius
local l2Prad = lerp(l2n1rad, l2n2rad, l2Xnorm)
local tempVec = (linePointFromXnorm(l2n1pos, l2n2pos, l1n1pos:xnormOnLine(l2n1pos, l2n2pos)) - l1n1pos):normalized() * (l2Prad + l1n1rad)
positions[i] = linePointFromXnorm(map.nodes[n1].links[n2].inPos, map.nodes[n1].links[n2].outPos, splitData[i][1])
radii[i] = lerp(map.nodes[n1].links[n2].inRadius, map.nodes[n1].links[n2].outRadius, splitData[i][1])
end
local t2 = linePointFromXnorm(l2n1pos, l2n2pos, l2xn)
local l1Prad = lerp(l1n1rad, l1n2rad, l1xn)
local l2Prad = lerp(l2n1rad, l2n2rad, l2xn)
local l1Prad = lerp(l1n1rad, l1n2rad, l1xn)
local l2Prad = lerp(l2n1rad, l2n2rad, l2xn)
if t1:squaredDistance(t2) < square(min(l1Prad, l2Prad) * 0.5) then
positions[j] = linePointFromXnorm(map.nodes[n1].links[n2].inPos, map.nodes[n1].links[n2].outPos, splitData[j][1])
radii[j] = lerp(map.nodes[n1].links[n2].inRadius, map.nodes[n1].links[n2].outRadius, splitData[j][1])
end
local l1n2rad = edges[edgeId][3].outRadius
local linePrad = lerp(l1n1rad, l1n2rad, xnorm)
local d2 = n.pos:squaredDistance(linePoint)
positions[j] = linePointFromXnorm(map.nodes[n1].links[n2].inPos, map.nodes[n1].links[n2].outPos, splitData[j][1])
radii[j] = lerp(map.nodes[n1].links[n2].inRadius, map.nodes[n1].links[n2].outRadius, splitData[j][1])
end
local xnorm = (pathLen[j] - pathLen[i]) / (pathLen[k] - pathLen[i])
local rDiff = abs(map.nodes[path[j]].radius - lerp(map.nodes[path[i]].radius, map.nodes[path[k]].radius, xnorm))
if rDiff > maxDiff then
@/lua/ge/extensions/scenario/raceMarkers/crawlMarker.lua
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
else
columnHeight = lerp(50.0, 200.0, clamp(inverseLerp(200.0, 1200.0, distanceFromMarker), 0, 1))
end
@/lua/ge/extensions/gameplay/rally/tools/rallyToolbox.lua
local xnorm = self.selectedPacenoteWaypoint.pos:xnormOnLine(self.lineSegState.fromPos, self.lineSegState.toPos)
local projPos = lerp(self.lineSegState.fromPos, self.lineSegState.toPos, xnorm)
@/lua/vehicle/hydros.lua
local speedT = max(electrics.values.airspeed, abs(electrics.values.wheelspeed)) / ffbSpeedFast
M.wheelFFBForceCoefCurrent = lerp(M.wheelFFBForceCoefLowSpeed, M.wheelFFBForceCoef, clamp(speedT, 0, 1)) -- approach maxForce as we get closer to the fast speed threshold
@/lua/ge/extensions/core/groundMarkers.lua
local t = inverseLerp(M.startingStep-from.distToTarget/M.stepDistance, M.startingStep-to.distToTarget/M.stepDistance, i)
local distFromVehicle = M.startingDist-lerp(from.distToTarget, to.distToTarget, t)
if distFromVehicle > M.decalDrawingDistance then return idx, false, i end
M.decalPool[idx].pos = lerp(from.pos, to.pos, t)
M.decalPool[idx].position:set(M.decalPool[idx].pos.x, M.decalPool[idx].pos.y, M.decalPool[idx].pos.z)
@/gameplay/missionTypes/collection/customNodes/collectionMarkersNode.lua
local c = clamp(inverseLerp(1, 100, dist),0,1)
debugDrawer:drawCylinder(pos + vec3(0,0,-100), pos + vec3(0,0,1000), lerp(0.1, 2, r), ColorF(0.5+0.5*clr[1],0.5+0.5*clr[2],0.5+0.5*clr[3],lerp(0.00, 0.3, c)))
end
local c = clamp(inverseLerp(1, 100, dist),0,1)
debugDrawer:drawCylinder(pos + vec3(0,0,-100), pos + vec3(0,0,1000), lerp(0.1, 2, r), ColorF(0.5+0.5*clr[1],0.5+0.5*clr[2],0.5+0.5*clr[3],lerp(0.00, 0.3, c)))
end
@/lua/ge/extensions/flowgraph/nodes/util/distanceRemaining.lua
local xnorm = vehData.pos:xnormOnLine(prevPos, nextPos)
distLeft = distLeft + lerp(prevPos, nextPos, xnorm):distance(nextPos)
if index < #self.pinIn.waypoints.value then
@/lua/vehicle/scriptai.lua
if a1 == 0 then
scriptTime = lerp(t1, t2, aiXnormOnSeg)
else
else
scriptTime = lerp(t1, t2, aiXnormOnSeg)
end
end
local reqVel = dt1 == 0 and v2 or lerp(v1, v2, (scriptTime - t1) / dt1) -- required velocity
local timeDiff = scriptTime - time -- negative value indicates vehicle is lagging script
if p1 and p2 and a then
local targetPos = lerp(p1, p2, a)
local up = obj:getDirectionVectorUp()
@/lua/ge/extensions/gameplay/crawl/boundary.lua
local currentScale = lerp(minScale, maxScale, smootherstep(scaleT))
local currentAlpha = lerp(0.0, 1.0, smootherstep(alphaT))
local currentScale = lerp(minScale, maxScale, smootherstep(scaleT))
local currentAlpha = lerp(0.0, 1.0, smootherstep(alphaT))
local alphaT = 1.0 - (objectInfo.animationTimer / fadeOutDuration)
local currentAlpha = lerp(0.0, 1.0, smootherstep(alphaT))
local t = j / numMarkers
local pos = lerp(startPos, endPos, t)
@/lua/ge/extensions/gameplay/police.lua
local sideSeg = placeData.width / amount
local sideDisp = lerp(sideSeg * (i - 1), sideSeg * i, 0.5) - placeData.width * 0.5
local dir = sign2(sideDisp)
local coef = policeVehs[be:getPlayerVehicleID(0)] and 1 or 2 -- longer timer if player is not police
suspectTimer = time or (lerp(suspectTimerDelay, 0, vars.suspectFrequency) + random(15)) * coef -- time until next suspect gets queued
end
@/lua/vehicle/sounds.lua
--blend in volume
sndVol = lerp(snd.minVolume, snd.maxVolume, (val - snd.volumeBlendInStartValue) / (snd.volumeBlendInEndValue - snd.volumeBlendInStartValue))
elseif val > snd.volumeBlendInEndValue and val < snd.volumeBlendOutStartValue then
--blend out volume
sndVol = lerp(snd.minVolume, snd.maxVolume, (((val - snd.volumeBlendOutStartValue) / (snd.volumeBlendOutEndValue - snd.volumeBlendOutStartValue)) - 1) * -1)
end
--blend pitch
local sndPitch = lerp(snd.minPitch, snd.maxPitch, clamp((val - snd.pitchBlendInStartValue) / (snd.pitchBlendInEndValue - snd.pitchBlendInStartValue), 0, 1))
@/lua/ge/extensions/scenario/raceMarkers/ringMarker.lua
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
@/lua/ge/extensions/util/trackBuilder/obstaclePlacer.lua
else
local targetLen = lerp(piece.startLength, piece.endLength, clamp(o.offset, 0, 1))
for i = 1, #piece.points do
@/inspector/External/three.js/three.js
var aj = a.clone().lerp( c, i / cols );
var bj = b.clone().lerp( c, i / cols );
var aj = a.clone().lerp( c, i / cols );
var bj = b.clone().lerp( c, i / cols );
v[ i ][ j ] = aj.clone().lerp( bj, j / rows );
@/lua/ge/extensions/flowgraph/nodes/audio/fade.lua
else
Engine.Audio.setChannelVolume(self.channel, lerp(self.origVolume, self.targetVolume, self.timer / duration), true)
end
@/lua/ge/extensions/editor/tech/roadArchitect/geometry.lua
local p = cen + util.rotateVecAroundAxis(v1, vertical, q * theta)
p.z = lerp(z1, z2, q)
pDisc[idx] = p
pDisc[idx] = p
rDisc[idx], oDisc[idx] = lerp(rot1, rot2, q), lerp(off1, off2, q)
wDisc[idx], hLDisc[idx], hRDisc[idx] = lerpWAndH(w1, w2, hL1, hL2, hR1, hR2, q)
pDisc[idx] = p
rDisc[idx], oDisc[idx] = lerp(rot1, rot2, q), lerp(off1, off2, q)
wDisc[idx], hLDisc[idx], hRDisc[idx] = lerpWAndH(w1, w2, hL1, hL2, hR1, hR2, q)
@/lua/ge/extensions/flowgraph/nodes/scene/camera/cameraCircle.lua
end
self.camPos.z = lerp(prevZ, nextZ, 0.05) -- smoothing, to prevent rough steps
end
@/gameplay/missionTypes/scatterPickup/customNodes/scatterCollectNode.lua
self.collectedInFrame = 0
self.radius = self.radius + self.mgr.dtSim * lerp(maxRadiusSpeed, minRadiusSpeed, self.radius/maxRadius)
if self.radius > maxRadius then
@/lua/ge/extensions/core/cameraModes/driver.lua
-- Look-ahead angle
self.fwdSpeed = lerp(self.fwdSpeed, -data.vel:length() * push3(data.vel):normalized():dot(carFwd), data.dt * ( 1.5 - self.lookAheadSmoothness))
nRockPos:set(push3(carFwd) * (1 - self.rockPos:length() / self.lookAheadSmoothness) + self.rockPos)
@/lua/ge/extensions/gameplay/rally/driveline/drivelineRoute.lua
if xnorm > 0 then
local newpos = lerp(fromPoint.pos, toPoint.pos, xnorm)
return newpos
@/lua/ge/extensions/core/environment.lua
local factor = invertLerp(tempCurve[i-1][1], v[1], t)
tempC = lerp(tempCurve[i-1][2], v[2], clamp(factor,0,1))
break
@/lua/common/mathlib.lua
-- returns u, v satisfying p(u,v) = lerp( lerp(a1, a2, u), lerp(b1, b2, u), v ) in 2D
-- https://www.reedbeta.com/blog/quadrilateral-interpolation-part-2
-- returns u, v satisfying p(u,v) = lerp( lerp(a1, a2, u), lerp(b1, b2, u), v ) in 2D
-- https://www.reedbeta.com/blog/quadrilateral-interpolation-part-2
-- returns u, v satisfying p(u,v) = lerp( lerp(a1, a2, u), lerp(b1, b2, u), v ) in 2D
-- https://www.reedbeta.com/blog/quadrilateral-interpolation-part-2
@/lua/ge/extensions/util/forestGenerator.lua
data.pos = vec3(bluePos:getBlueNoise2d())
data.pos.x = lerp(minX, maxX, data.pos.x)
data.pos.y = lerp(minY, maxY, data.pos.y)
data.pos.x = lerp(minX, maxX, data.pos.x)
data.pos.y = lerp(minY, maxY, data.pos.y)
data.rotDeg = lerp(0, 360, randomRot / rotSteps)
data.pos.y = lerp(minY, maxY, data.pos.y)
data.rotDeg = lerp(0, 360, randomRot / rotSteps)
data.scl = lerp(minScl, maxScl, math.random())
data.rotDeg = lerp(0, 360, randomRot / rotSteps)
data.scl = lerp(minScl, maxScl, math.random())
data.pos = vec3(bluePos:getRandomPointInCircle(radius))
data.rotDeg = lerp(0, 360, randomRot / rotSteps)
data.scl = lerp(minScl, maxScl, math.random())
data.rotDeg = lerp(0, 360, randomRot / rotSteps)
data.scl = lerp(minScl, maxScl, math.random())
@/lua/ge/extensions/core/trafficSignals.lua
local nPos = linePointFromXnorm(p1, p2, xnorm)
local radius = lerp(mapNodes[n1].radius, mapNodes[n2].radius, xnorm)
@/lua/ge/extensions/gameplay/traffic.lua
tempVec:setCross(spawnPointDirVec, vecUp)
tempVec:setScaled(lerp(-lateralDist, lateralDist, random()))
spawnPointPos:setAdd(tempVec)
maxDist = maxDist or 500
targetDist = targetDist or min(minDist * 2, lerp(minDist, maxDist, 0.5))
else
auxiliaryData.dynamicSpawnDir = lerp(-1, 1, outboundCount / auxiliaryData.activeAmount)
end
@/lua/ge/extensions/scenario/raceMarkers/sideHologramMarker.lua
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local t = clamp(self.colorTimer / self.colorLerpDuration,0,1)
local alpha = lerp(self.modeInfos[self.oldMode or 'default'].alpha, self.modeInfos[self.mode or 'default'].alpha, t)
-- instance color 1
local scalarThin = lerp(self.modeInfos[self.oldMode or 'default'].scalarThin, self.modeInfos[self.mode or 'default'].scalarThin, t)
@/lua/ge/extensions/editor/rallyEditor/drivelineTab.lua
local nextNml = self.drivelineV3.spline.nmls[insertIdx] or vec3(0, 0, 1)
table.insert(self.drivelineV3.spline.nmls, insertIdx, lerp(prevNml, nextNml, 0.5))
@/lua/vehicle/controller/vehicleController/shiftLogic/cvtGearbox2.lua
local nextFixedGearRatio = cvtHandling.fixedGearRatios[cvtHandling.fixedGearRatioIndex + 1]
local shiftThreshold = lerp(fixedGearRatio, nextFixedGearRatio, M.smoothedValues.drivingAggression) -- higher aggression means a higher shift point
-- streams.drawGraph("Upshift Threshold", { value = shiftThreshold, color = "#00ffff" })
@/lua/ge/extensions/gameplay/route/route.lua
if xnorm > 0 then
a.pos = lerp(a.pos, b.pos, xnorm)
a.wp = nil
@/lua/ge/spawn.lua
local projectedPosition = n1.pos + segmentDir * scalarProjection
pos = projectedPosition + perpendicular:normalized() * roadSide * (lerp(n1.radius, n2.radius, scalarProjection) - veh.initialNodePosBB:getExtents().x/2)
@/lua/ge/extensions/gameplay/route/raceRoute.lua
-- gcprobe()
-- a.pos = lerp(a.pos, b.pos, xnorm)
a.pos:setLerp(a.pos, b.pos, xnorm)
@/lua/ge/extensions/editor/masterSpline/homologation.lua
-- Lerp between node normals.
local nml = lerp(nmls[idxA], nmls[idxB], alpha)
nml:normalize()
local oldZ = nodes[i].z
nodes[i].z = lerp(oldZ, targetZ, slopeEaseFactor)
@/lua/ge/extensions/career/modules/marketplace.lua
local t = math.max(0, math.min(1, inverseLerp(0.98, 0.85, marketRatio)))
offerTimeMultiplier = lerp(1, 0.4, t)
elseif marketRatio > 1.1 then
local t = math.max(0, math.min(1, inverseLerp(1.1, 1.5, marketRatio)))
offerTimeMultiplier = lerp(1, 4.0, t)
end
@/gameplay/missionTypes/scatterPickup/customNodes/scatterAnimatorNode.lua
scenetree.findObject(e.objectId):setScale(vec3(1,1,1) * sclCurve(e.animationTimer))
scenetree.findObject(e.objectId):setPosition(lerp(e.pos, e.vehicleTarget, posCurve(e.animationTimer)) + vec3(0,0,zAdd(e.animationTimer)*e.zScl))
end
@/lua/ge/extensions/ui/policeInfo.lua
pd.sightValue = pursuit.sightValue
pd.arrest = lerp(pd.arrest, pursuit.timers.arrestValue, 0.5)
pd.evade = lerp(pd.evade, pursuit.timers.evadeValue, 0.5)
pd.arrest = lerp(pd.arrest, pursuit.timers.arrestValue, 0.5)
pd.evade = lerp(pd.evade, pursuit.timers.evadeValue, 0.5)
-- lerp is used to make the progress bar act fancy when values get reset to zero
@/lua/ge/extensions/gameplay/parking.lua
for i, ps in ipairs(psList) do
local minValue = min(fallbackValue, lerp(ratio, 1, square(i / psCount))) -- minValue is lower for nearer parking spots
if not selected[ps.ps.name] and random() >= minValue then
@/lua/ge/extensions/flowgraph/nodes/util/closestRoad.lua
self.pinOut.projectedPoint.value = projPos:toTable()
self.pinOut.width.value = lerp(a.radius, b.radius, xnorm) * 2
end
@/lua/ge/extensions/scenario/raceMarkers/sideMarker.lua
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
local function lerpColor(a,b,t)
return {lerp(a[1],b[1],t),lerp(a[2],b[2],t),lerp(a[3],b[3],t)}
end
if self.sides then
local sideSize = lerp(1*self.radius,sideToDistantRatio, smootherstep(distantFade))
self.sides:setScale(vec3(self.radius, self.radius, self.radius))
@/lua/ge/extensions/editor/toolUtilities/util.lua
-- Generates a hue-based colour, based on the given value.
local function getHueBasedColour255(t) return hsvToRgb255(lerp(240, 0, clamp(t, 0, 1)), 1.0, 1.0) end
@/lua/ge/extensions/editor/terraform/terraform.lua
roughness, scale = clamp(roughness, 0, 1), clamp(scale, 0, 1) -- Clamp the input roughness and scale to the range [0, 1].
local noiseStrength = lerp(0.0, 1.0, roughness) -- Amplitude mapping.
local noiseFreq = lerp(0.02, 0.2, scale) -- Frequency mapping: large bumps ~ 50m wavelength => freq ~= 0.02, small bumps ~ 5m wavelength => freq ~= 0.2.
local noiseStrength = lerp(0.0, 1.0, roughness) -- Amplitude mapping.
local noiseFreq = lerp(0.02, 0.2, scale) -- Frequency mapping: large bumps ~ 50m wavelength => freq ~= 0.02, small bumps ~ 5m wavelength => freq ~= 0.2.
local fbmOctaves = floor(lerp(3, 6, scale) + 0.5) -- Octave mapping: avoid flickering patterns (three layers), richer detail (six layers).
local noiseFreq = lerp(0.02, 0.2, scale) -- Frequency mapping: large bumps ~ 50m wavelength => freq ~= 0.02, small bumps ~ 5m wavelength => freq ~= 0.2.
local fbmOctaves = floor(lerp(3, 6, scale) + 0.5) -- Octave mapping: avoid flickering patterns (three layers), richer detail (six layers).
return noiseFreq, noiseStrength, fbmOctaves, defaultFbmLacunarity, defaultFbmGain
local w = clamp(influence / (2 * globalSmoothRadius + 1), 0, 1)
final[idx] = lerp(final[idx], sum / count, w)
end
local w = clamp((1.0 - dist * DOIInv) ^ falloffExp, 0, 1) -- Weight of blend, based non-linearly on distance to ribbon.
final[idx] = lerp(original, ribbonZ, w) -- If grid point within DOI, blend between original height and ribbon height.
mod[idx] = 1 -- Set the mod array to 1 to indicate that the grid point is within the DOI.
@/lua/ge/extensions/scenario/raceMarkers/sideColumnMarker.lua
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
local function lerpColor(a,b,t)
lerpedColor:set(lerp(a[1],b[1],t), lerp(a[2],b[2],t), lerp(a[3],b[3],t))
return lerpedColor
@/lua/ge/extensions/gameplay/race/race.lua
local distToAdd = inNextPos:distance(lerp(inPrevPos, inNextPos, clamp(pointA:xnormOnLine(inPrevPos, inNextPos), 0, 1)))
local distToAddTwo = outPrevPos:distance(lerp(outNextPos, outPrevPos, clamp(pointB:xnormOnLine(outNextPos, outPrevPos), 0, 1)))
local distToAdd = inNextPos:distance(lerp(inPrevPos, inNextPos, clamp(pointA:xnormOnLine(inPrevPos, inNextPos), 0, 1)))
local distToAddTwo = outPrevPos:distance(lerp(outNextPos, outPrevPos, clamp(pointB:xnormOnLine(outNextPos, outPrevPos), 0, 1)))
local roadPos = linePointFromXnorm(n1.pos, n2.pos, xnorm)
local rad = lerp(mapNodes[n1.wp] and mapNodes[n1.wp].radius or 10, mapNodes[n2.wp] and mapNodes[n2.wp].radius or 10, xnorm)
@/lua/ge/extensions/career/modules/tether.lua
debugDrawer:drawLine(playerPos, t.p1, ColorF(0,0,1,0.1))
simpleDebugText3d(string.format("%0.1fm", (t.p1-playerPos):length()), lerp(playerPos, t.p1, 0.5))
end
debugDrawer:drawLine(playerPos, t.p1, ColorF(0,0,1,0.1))
simpleDebugText3d(string.format("%0.1fm", (t.p1-playerPos):length()), lerp(playerPos, t.p1, 0.5))
end
debugDrawer:drawSphere(t.p2, t.r2, ColorF(0,1,0,0.2))
local p = lerp(t.p1, t.p2, clamp(xnorm, 0, 1))
debugDrawer:drawLine(playerPos, p, ColorF(0,0,1,0.1))
debugDrawer:drawLine(t.p1, t.p2, ColorF(0,0,1,0.1))
simpleDebugText3d(string.format("%0.1fm", (p-playerPos):length()), lerp(playerPos, p, 0.5))
end
if xnorm >= 1 then return (playerPos-t.p2):length() > t.r2 end
return dist > lerp(t.r1, t.r2, xnorm)
end
debugDrawer:drawLine(playerPos,vehPos, ColorF(0,0,1,0.1))
simpleDebugText3d(string.format("%0.1fm", (playerPos - vehPos):length()), lerp(vehPos, playerPos, 0.5))
--log("I","Tether: " .. string.format("%0.1fm", (playerPos - vehPos):length()))
@/lua/ge/extensions/freeroam/specialTriggers.lua
if not data.delayRandom then
data.delayRandom = lerp(delayRandomMin, delayRandomMax, math.random()) -- random delay until next index step
end
@/lua/ge/extensions/editor/toolUtilities/splineInput.lua
table.insert(widths, tableIdx, lerpWidth)
local lerpNormal = lerp(nmls[iPrev], nmls[iNext], 0.5)
table.insert(nmls, tableIdx, lerpNormal)
@/lua/ge/extensions/core/hotlapping.lua
local xnorm = clamp(pos:xnormOnLine(p1, p2), 0, 1)
radius = math.max(3, lerp(mapNodes[n1].radius, mapNodes[n2].radius, xnorm) + 1)
end