离散线的算法
Algorithm for Discretizing Line
本文关键字:算法 更新时间:2023-10-16
对于某些给定线(x_1, y_1)
, (x_2, y_2)
绑定的给定线,哪些算法方法和方法可用于将此行分散到偶数段中?
数学上,我想一个人会:
(1)找到长度,
(2)除以n个段数,然后
(3)从此数据计算段点
,但我想知道是否有更好或更多的"计算机科学"方法。
我是第一年的CS学生,所以我不知道我在寻找什么,甚至从哪里开始寻找。
无需计算和使用长度。
您可以通过简单的线性插值找到中间点(对于n个相等的段):
for i = 1 to N - 1
Point[i].X = X1 + (X2 - X1) * i / N
Point[i].Y = Y1 + (Y2 - Y1) * i / N
如果您担心有效性,请预先计算X_coeff = (X2 - X1) / N
并在周期内使用此值
这是一个如何从std :: cin读取两个点(和n)的示例,然后计算段,最后将它们打印到std :: cout。
#include <iostream>
#include <vector>
struct point
{
double x;
double y;
};
int main()
{
point P1;
point P2;
size_t N;
std::cin >> P1.x >> P1.y;
std::cin >> P2.x >> P2.y;
std::cin >> N;
std::vector<point> segments(N + 1);
double x_diff = (P2.x - P1.x) / N;
double y_diff = (P2.y - P1.y) / N;
for (size_t i = 1; i < segments.size(); ++i)
{
segments[i].x = P1.x + x_diff * i;
segments[i].y = P1.y + y_diff * i;
}
segments[0] = P1;
for (size_t i = 1; i < segments.size(); ++i)
{
std::cout << "(" << segments[i-1].x << "," << segments[i-1].y << ") - ";
std::cout << "(" << segments[i].x << "," << segments[i].y << ")" << std::endl;
}
}
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- STL算法函数在多个一维容器上的使用
- 读取最后一行代码算法 - c++ 时出现问题
- 括号更改 O(n) 算法
- std::unordered_map 搜索算法是如何实现的?
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 如何在 Mac 上使用 c++17 并行标准库算法?