- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
尝试找到可以帮助我们通过一系列点绘制 3D 线的函数。
对于我们知道的每个点:日期和时间、纬度、经度、高度、速度和航向。数据可能每 10 秒记录一次,我们希望能够估计中间的点并将粒度增加到 1 秒。从而在 3D 空间中创建虚拟飞行路径。
我发现了许多曲线拟合算法,这些算法可以通过一系列点来近似直线,但它们不能保证这些点相交。它们也不考虑速度和航向来确定物体到达下一个点最可能采用的路径。
最佳答案
从物理学的角度来看:
您必须假设中间点的加速度才能获得插值。
如果您的物理系统表现相对良好(如汽车或飞机),而不是例如弹跳球,您可以继续假设加速度随点之间的时间线性变化。
恒定变化的加速运动的矢量方程为:
x''[t] = a t + b
其中除 t 之外的所有量级都是向量。
对于您已经知道的每个段 v(t=t0) x(t=t0) tfinal 和 x(tfinal) v(tfinal)
通过求解微分方程你得到:
Eq 1:
x[t_] := (3 b t^2 Tf + a t^3 Tf - 3 b t Tf^2 - a t Tf^3 - 6 t X0 + 6 Tf X0 + 6 t Xf)/(6 Tf)
并对你得到的位置和速度施加初始和最终约束:
等式 2:
a -> (6 (Tf^2 V0 - 2 T0 Tf Vf + Tf^2 Vf - 2 T0 X0 + 2 Tf X0 +
2 T0 Xf - 2 Tf Xf))/(Tf^2 (3 T0^2 - 4 T0 Tf + Tf^2))
b -> (2 (-2 Tf^3 V0 + 3 T0^2 Tf Vf - Tf^3 Vf + 3 T0^2 X0 -
3 Tf^2 X0 - 3 T0^2 Xf + 3 Tf^2 Xf))/(Tf^2 (3 T0^2 - 4 T0 Tf + Tf^2))}}
因此,将 eqs 2 的值插入 eq 1 中,您将根据初始和最终位置和速度获得点的时间插值。
喂!
编辑
几个例子在二维中有突然的速度变化(在 3D 中完全相同)。如果初始速度和最终速度相似,您将获得“更直”的路径。
假设:
X0 = {0, 0}; Xf = {1, 1};
T0 = 0; Tf = 1;
如果
V0 = {0, 1}; Vf = {-1, 3};
V0 = {0, 1}; Vf = {-1, 5};
V0 = {0, 1}; Vf = {1, 3};
这是一个动画,您可以看到速度从 V0 = {0, 1} 变为 Vf = {1, 5}:
在这里您可能会看到一个 3D 加速物体,其位置等间隔:
编辑
一个完整的问题:
为方便起见,我将使用笛卡尔坐标。如果你想从 lat/log/alt 转换为笛卡尔坐标,只需执行以下操作:
x = rho sin(theta) cos(phi)
y = rho sin(theta) sin(phi)
z = rho cos(theta)
其中 phi 是经度,theta 是纬度,rho 是您的高度加上地球的半径。
假设我们的分割开始于:
t=0 with coordinates (0,0,0) and velocity (1,0,0)
结束于
t=10 with coordinates (10,10,10) and velocity (0,0,1)
我显然改变了坐标原点,将原点设置在我的起点。那只是为了获得漂亮的整数......
所以我们替换 a 和 b 的公式中的那些数字并得到:
a = {-(3/50), -(3/25), -(3/50)} b = {1/5, 3/5, 2/5}
有了这些,我们进入方程式 1,物体的位置由下式给出:
p[t] = {1/60 (60 t + 6 t^2 - (3 t^3)/5),
1/60 (18 t^2 - (6 t^3)/5),
1/60 (12 t^2 - (3 t^3)/5)}
就是这样。你得到 1 到 10 秒的位置,用上面等式中的值替换 t。
动画运行:
编辑2
如果你不想弄乱垂直加速度(可能是因为你的“速度计”没有读取它),你可以为 z 轴分配一个恒定速度(考虑它有一个非常小的错误平行于Rho轴),等于(Zfinal - Zinit)/(Tf-T0),然后解决平面中忘记高度的问题。
关于c# - 3D空间中的曲线拟合点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362498/
我正在尝试创建 treasury yield curve 的图表比较两个不同日期的汇率。我很难将两条曲线组合起来并创建一个干净的图形。 我的问题:如何将两条 yield 曲线绘制在一起, yield
我在 R 平台中使用 randomForest 包进行分类任务。 rf_object<-randomForest(data_matrix, label_factor, cutoff=c(k,1-k))
我的设计师给我设计了这个设计,但我不知道如何最好地处理图像上方和下方的曲线。 我考虑过 clip-path 但不知道如何 flex 它。如果可以的话,我不想使用图像。 最佳答案 您可以使用 borde
我正在使用 Canvas 中的笔触和路径来制作两条线,我希望它们像波浪效果一样弯曲。而不是在 Photoshop 中创建实际图像来实现此目的。 谁能帮忙得到如下图所示的曲线? 我还想在末端实现圆 An
我正在尝试开发一种可以处理图像骨架的路径/曲线的代码。我想要一个来自两点之间骨架的点 vector 。 这段代码加了点就结束了,没找到解决办法。 #include "opencv2/highgui/
现在需要帮助。我可以用MKPolyline和MKPolylineView画线,但是如何在MKMapView上的两个坐标之间画弧线或曲线呢?非常感谢。 最佳答案 在回答问题之前,重要的是要提到 MKOv
我正在尝试应用 sklearn 的想法 ROC extension to multiclass到我的数据集。我的每类 ROC 曲线看起来都找到了一条直线,取消显示曲线波动的 sklearn 示例。 我
我有以下概念问题,我无法理解。 以下是调查数据示例,其中我有一个时间列,指示某人需要多长时间才能回答某个问题。 现在,我感兴趣的是清洁量将如何根据此阈值发生变化,即如果我增加阈值会发生什么,如果我降低
如何为使用视频的对象检测应用绘制每个窗口的误报率与未命中率(或误报概率)和 ROC(接收器操作曲线)的图表?如何确定误报和命中的数量?一个例子是很有用。 最佳答案 它很简单。将所有真正 (H0) 值存
我正在尝试绘制随机森林分类的 ROC 曲线。绘图有效,但我认为我绘制了错误的数据,因为生成的绘图只有一个点(准确性)。 这是我使用的代码: set.seed(55) data.controls <
我有如下两个模型: library(mlbench) data(Sonar) library(caret) set.seed(998) my_data <- Sonar fitControl <-
是否可以仅通过查看其 ROC 曲线来了解分类器是否过度拟合?我看到如果它的 AUC 太高(例如 98%)可能会过度拟合,但这也可能意味着分类器非常好。有没有办法区分这两种情况? 最佳答案 简短的回答:
我正在 JavaFX 中创建一个图形,它应该由有向边连接。最好是双三次曲线。有谁知道如何添加箭头? 箭头当然应该根据曲线的末端进行旋转。 这是一个没有箭头的简单示例: import javafx.ap
我需要对我正在尝试的技术进行一些说明。我正在尝试将一个实体从 A 点移动到 B 点,但我不希望该实体沿直线移动。 例如,如果实体位于 x: 0, y:0 并且我想到达点 x:50, y: 0,我希望实
我试图在曲线下方绘制阴影区域,但阴影区域位于曲线上方。谁能告诉我我的代码有什么问题? x=seq(0,30) y1=exp(-0.1*x) plot(x,y1,type="l",lwd=2,col="
我需要对我正在尝试的技术进行一些说明。我正在尝试将一个实体从 A 点移动到 B 点,但我不希望该实体沿直线移动。 例如,如果实体位于 x: 0, y:0 并且我想到达点 x:50, y: 0,我希望实
我有一个如下所示的模型: library(mlbench) data(Sonar) library(caret) set.seed(998) my_data <- Sonar fitControl <
有没有办法从pyspark中的Spark ML获取ROC曲线上的点?在文档中,我看到了一个 Scala 的例子,但不是 python:https://spark.apache.org/docs/2.1
我正在尝试使用Local Outlier Factor (LOF)算法,并想绘制 ROC 曲线。问题是,scikit-learn 提供的库不会为每个预测生成分数。 那么,有什么办法可以解决这个问题吗?
我目前正在使用 GDI+ 绘制折线图,并使用 Graphics.DrawCurve 来平滑线条。问题是曲线并不总是与我输入的点匹配,这使得曲线在某些点上超出了图形框架,如下所示(红色是 Graph
我是一名优秀的程序员,十分优秀!