我知道向量A和B的坐标.我如何计算这两个向量之间的第一个点?第一个向量X是向量A和B之间距离的1%.所以首先我将向量A中的对象移动1%接近向量B.所以我需要计算向量X,它是对象的新向量,直到它到达向量B .
我有这个作为我的lerp函数:
Vec2f lerp(float t, Vec2f a, Vec2f b){
return (1-t)*a + t*b;
}
Run Code Online (Sandbox Code Playgroud)
我在下面有以下代码,我希望这会导致"补间":
Vec2f a(0,0);
Vec2f b(3,4);
Vec2f c(5,4);
Vec2f d(5,0);
if( i < 100 ){
if(i <= 30){
ball.pos = lerp(i, a, b);
}
else if(i > 30 && i < 80){
ball.pos = lerp(i, b, c);
}
else {
ball.pos = lerp(i, a, d);
}
} i += 1;
Run Code Online (Sandbox Code Playgroud)
但我得到的是一个"不连续的补间",它不是从A到B的lerp结束的最后一点开始,而是从其他地方开始,有些则用于其他lerps.我究竟做错了什么?
所以我正在尝试编写一个三线性插值函数,但是我遇到了一些麻烦.
首先我们有一个插值:
float interpolate1D(float v1, float v2, float x){
return v1*(1-x) + v2*x;
}
Run Code Online (Sandbox Code Playgroud)
然后2D插值:
float interpolate2D(float v1, float v2, float v3, float v4, float x, float y){
float s = interpolate1D(v1, v2, x);
float t = interpolate1D(v3, v4, x);
return interpolate1D(s, t, y);
}
Run Code Online (Sandbox Code Playgroud)
但是一旦它进入3D,事情会变得棘手.我无法弄清楚如何使用2D插值函数实现3D插补器.我不知道为什么我有这个心理僵尸,因为它应该只是一个简单的扩展,但我想所有不同的变量在起作用都会让我失望.所以我开始下面的功能,但它不完整,我需要帮助完成它.
float interpolate3D(v1, v2, v3, v4, v5, v6, v7, v8, float x, float y, float z){
float s = interpolate2D(v1, v2, v3, v4, x, y);
float t = interpolate2D(v5, v6, v7, v7, x, z);
//What …Run Code Online (Sandbox Code Playgroud) 函数lerp()是编程语言中的常用函数:
lerp(a, b, t) = a + t * (b - a).
Run Code Online (Sandbox Code Playgroud)
现在对于很多场景,我有一个反函数:
fraction(x, a, b) = (x - a) / (b - a).
Run Code Online (Sandbox Code Playgroud)
这个功能是这样构建的
lerp(a, b, fraction(x, a, b)) == x
Run Code Online (Sandbox Code Playgroud)
和
fraction(lerp(a, b, t), a, b) == t
Run Code Online (Sandbox Code Playgroud)
但是我对名称"分数"不满意.这个功能有一个共同的名称吗?
terminology function naming-conventions inverse linear-interpolation
我想在a data.frame和线性插入所有缺失值之间添加最小和最大日期之间的所有缺失日期,例如
df <- data.frame(date = as.Date(c("2015-10-05","2015-10-08","2015-10-09",
"2015-10-12","2015-10-14")),
value = c(8,3,9,NA,5))
date value
2015-10-05 8
2015-10-08 3
2015-10-09 9
2015-10-12 NA
2015-10-14 5
date value approx
2015-10-05 8 8
2015-10-06 NA 6.33
2015-10-07 NA 4.67
2015-10-08 3 3
2015-10-09 9 9
2015-10-10 NA 8.20
2015-10-11 NA 7.40
2015-10-12 NA 6.60
2015-10-13 NA 5.80
2015-10-14 5 5
Run Code Online (Sandbox Code Playgroud)
有没有一个明确的解决方案dplyr和approx?(我不喜欢我的10行for循环代码.)
refpages 说“返回最接近指定纹理坐标的四个纹理元素的加权平均值。” 它们的权重到底是怎样的?那么 3D 纹理呢,它仍然只使用 4 个或更多纹理像素进行插值吗?
我有下表记录了每天的值。问题是有时几天不见了。我想编写一个 SQL 查询,它将:
所以从下面的源表:
Date Value
--------------------
2010/01/10 10
2010/01/11 15
2010/01/13 25
2010/01/16 40
Run Code Online (Sandbox Code Playgroud)
我要回:
Date Value
--------------------
2010/01/10 10
2010/01/11 15
2010/01/12 20
2010/01/13 25
2010/01/14 30
2010/01/15 35
2010/01/16 40
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我有一个线性插值方法.这是在已知(x1,y1)(x2,y2)和x0时计算插值.它是计算y0值.但是当多点知道时我需要这样做.
我不是在谈论双线性或三线性插值.
我有一个包含日期时间、纬度、经度、z 列的数据框。我正在从 csv 文件中读取数据,因此设置日期时间的时间段不起作用。时间以 6 小时为间隔,但我想将数据线性插入到每小时间隔。
从...来
'A' 'B' 'C' 'D'
0 2010-09-13 18:00:00 16.3 -78.5 1
1 2010-09-14 00:00:00 16.6 -79.8 6
2 2010-09-14 06:00:00 17.0 -81.1 12
Run Code Online (Sandbox Code Playgroud)
到
'A' 'B' 'C' 'D'
1 2010-09-13 18:00:00 16.3 -78.5 1
2 2010-09-13 19:00:00 16.35 -78.7 2
3 2010-09-13 20:00:00 16.4 -78.9 3
4 2010-09-13 21:00:00 16.45 -79.1 4
5 2010-09-13 22:00:00 16.5 -79.3 5
....
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用 interpolate 命令,但没有关于数据帧新长度的参数。
df.interpolate(method='linear')
Run Code Online (Sandbox Code Playgroud)
我在想我可以使用 .loc 在数据帧的每行之间包含 5 行 NAN,然后使用插值函数,但这似乎是一个糟糕的解决方法。
解决方案 使用DatetimeIndex消除了与其他列的关联,如果您最初的列并没有被导入为日期时间。
i = pd.DatetimeIndex(start=df['A'].min(), …Run Code Online (Sandbox Code Playgroud) 百分位数的线性插值公式为:
线性:i + (j - i) * 分数,其中分数是被 i 和 j 包围的索引的小数部分。
假设我有这个包含 16 个观察值的列表:
test = [0, 1, 5, 5, 5, 6, 6, 7, 7, 8, 11, 12, 21, 23, 23, 24]
Run Code Online (Sandbox Code Playgroud)
我将它作为一个 numpy 数组传递并使用线性插值计算第 85 个百分位数。
np_test = np.asarray(test)
np.percentile(np_test, 85, interpolation = 'linear')
Run Code Online (Sandbox Code Playgroud)
我得到的结果是22.5。但是,我不认为这是正确的。第 85 个百分位的指数是 0.85 * 16 = 13.6。因此,小数部分是 0.6。第 13 个值是 21,所以 i = 21。第 14 个值是 23,所以 j = 23。然后线性公式应该产生:
21 + (23 - 21) * .6 = 21 + 2 …
math ×2
python ×2
3d ×1
algorithm ×1
c++ ×1
dplyr ×1
function ×1
inverse ×1
javascript ×1
missing-data ×1
multipoint ×1
numpy ×1
opengl ×1
pandas ×1
percentile ×1
r ×1
t-sql ×1
terminology ×1
textures ×1
time-series ×1
vector ×1