精华内容
下载资源
问答
  • ITK:条曲线上所有点之间的平均距离内容提要输出结果C++实现代码 内容提要 计算条曲线的所有点之间的平均距离。 输出结果 C++实现代码 #include "itkImage.h" #include "itkImageFileReader.h" #include ...

    ITK:两条曲线上所有点之间的平均距离

    内容提要

    计算两条曲线的所有点之间的平均距离。

    输出结果

    在这里插入图片描述

    C++实现代码

    #include "itkImage.h"
    #include "itkImageFileReader.h"
    #include "itkContourMeanDistanceImageFilter.h"
    #ifdef ENABLE_QUICKVIEW
    #  include "QuickView.h"
    #endif
    template <typename TImage>
    static void CreateImage1(TImage * const);
    
    template <typename TImage>
    static void CreateImage2(TImage * const);
    
    int main(int, char *[])
    {
      using ImageType = itk::Image<unsigned char, 2>;
    
      ImageType::Pointer image1 = ImageType::New();
      CreateImage1(image1.GetPointer());
    
      ImageType::Pointer image2 = ImageType::New();
      CreateImage2(image2.GetPointer());
    
      using ContourMeanDistanceImageFilterType = itk::ContourMeanDistanceImageFilter<ImageType, ImageType>;
    
      ContourMeanDistanceImageFilterType::Pointer contourMeanDistanceImageFilter =
        ContourMeanDistanceImageFilterType::New();
      contourMeanDistanceImageFilter->SetInput1(image1);
      contourMeanDistanceImageFilter->SetInput2(image2);
      contourMeanDistanceImageFilter->Update();
    
      std::cout << "Mean distance: " << contourMeanDistanceImageFilter->GetMeanDistance() << std::endl;
    
    #ifdef ENABLE_QUICKVIEW
      QuickView viewer;
      viewer.AddImage(image1.GetPointer());
      viewer.AddImage(image2.GetPointer());
      viewer.Visualize();
    #endif
      return EXIT_SUCCESS;
    }
    
    template <typename TImage>
    void CreateImage1(TImage * const image)
    {
      // Create an image bigger than the input image and that has dimensions which are powers of two
      typename TImage::IndexType start = { { 0, 0 } };
    
      typename TImage::SizeType size = { { 20, 20 } };
    
      itk::ImageRegion<2> region(start, size);
    
      image->SetRegions(region);
      image->Allocate();
      image->FillBuffer(0);
    
      // Create a diagonal white line through the image
      for (typename TImage::IndexValueType i = 0; i < 20; i++)
      {
        for (typename TImage::IndexValueType j = 0; j < 20; j++)
        {
          if (i == j)
          {
            itk::Index<2> pixel = { { i, j } };
            image->SetPixel(pixel, 255);
          }
        }
      }
    }
    
    template <typename TImage>
    void CreateImage2(TImage * const image)
    {
      typename TImage::IndexType start = { { 0, 0 } };
    
      typename TImage::SizeType size = { { 20, 20 } };
    
      itk::ImageRegion<2> region(start, size);
    
      image->SetRegions(region);
      image->Allocate();
      image->FillBuffer(0);
    
      // Create a vertical line of white pixels down the center of the image
      for (typename TImage::IndexValueType i = 0; i < 20; i++)
      {
        for (typename TImage::IndexValueType j = 0; j < 20; j++)
        {
          if (i == 10)
          {
            itk::Index<2> pixel = { { i, j } };
            image->SetPixel(pixel, 255);
          }
        }
      }
    }
    
    展开全文
  • 最近做毕设需要用到ArcGIS,首先就如何寻找线...或者ArcToolBox中寻找到“相交”工具输入要寻找交点的两个图层连接属性为“All”可以保证导出的点包含个相交线元素的所有信息输出类型选择“Point”,这样输出...

    最近做毕设需要用到ArcGIS,首先就如何寻找两个线图层之间的交点找了一些资料,看到大多数是用拓扑工具的,比较麻烦,无意之间发现了一种更加简单的寻找线之间的交点的方法,这里拿出来给大家说一下,顺便看看合理性吧

    在菜单栏的“地理处理”,或者ArcToolBox中寻找到“相交”工具

    输入要寻找交点的两个图层

    连接属性为“All”可以保证导出的点包含两个相交线元素的所有信息

    输出类型选择“Point”,这样输出的就是交点了

    最后点击确定就是了

    我看着是挺好的,暂时还不知道有什么缺点,聊作分享。

    展开全文
  • 该程序将生成个给定点之间的 3D ... 精度(可选) - 尽管根据 Bresenham 的线算法,坐标 x1 y1 z1 和 x2 y2 z2 应该是整数,但该程序将其限制扩展到所有实数。 如果其中任何一个是浮点数,则应指定要保留的小数
  • SHPATH - 避障最短路径(版本 1.3) 给定一个由 0(对于开放空间)和 1(对于障碍物)组成“地形”矩阵,该函数计算个指定点之间的最短路径,同时避开障碍物。 采用阶段解决方案。 在第一阶段,算法通过...
  • 该函数实现了 Vladimir J. LUMELSKY,“线段之间距离快速计算”,信息处理快报 21 (1985) 55-61... 它也处理所有退化情况(当线平行时,一条线是一个线都是)。 或者,该函数可以返回线段上最近的两
  • 光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个...光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。 你需要设计这样一...

    光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?
    光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连。光明小学的每个班都有M个学生,所以你要为他们设计出一条恰好经过M条边的路径。
    光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。

    你需要设计这样一个函数:
    res[][] Solve( N, M, map[][]);
    注意:map必然是N * N的二维数组,且map[i][j] == map[j][i],map[i][i] == 0,-1e8 <= map[i][j] <= 1e8。(道路全部是无向边,无自环)2 <= N <= 100, 2 <= M <= 1e6。要求时间复杂度控制在O(N^3*log(M))。

    map数组表示了一张稠密图,其中任意两个不同节点i,j间都有一条边,边的长度为map[i][j]。N表示其中的节点数。
    你要返回的数组也必然是一个N * N的二维数组,表示从i出发走到j,经过M条边的最短路径
    你的路径中应考虑包含重复边的情况。

    样例:
    N = 3
    M = 2
    map = {
    {0, 2, 3},
    {2, 0, 1},
    {3, 1, 0}
    }

    输出结果result为:
    result = {
    {4, 4, 3},
    {4, 2, 5},
    {3, 5, 2}
    }

    输入样例:
    3
    2
    3 3
    0 2 3
    2 0 1
    3 1 0

    输出样例:
    4 4 3
    4 2 5
    3 5 2

    分析:

    首先,假设从 i 到 j 经过(m-1)条边的最短距离已知,存储在last_opt[n][n]二维数组中。那么从 i 到 j 经过m条边的最短距离简化成:

    dp_opt=min(last_opt [i] [x] + map [x] [j] )

    经过m条边的最短路径只和最后一步的路径以及走(m-1)步的最短路径有关,map [x] [j] 表示最后一步,last_opt [i] [x] 表示从起点 i 走m-1 步到x的最短路径。

    附上Python 3 代码,时间复杂度 O(n^3*(m-1))//我不会算时间复杂度呀,这里可能算错了

    空间复杂度O(2*n*n)

    def minPath(n,m,map):
        last_opt=[list(x) for x in map]#初始化
        dp_opt=[list(x) for x in map]#初始化
        for step in range(m-1):#只需要循环 m-1次
            for i in range(n):
                for j in range(n):
                    temp = [last_opt[i][x] + map[x][j] for x in range(n) if map[x][j]!=0 and last_opt[i][x]!=0] #递推式转换 注意判断条件
                    dp_opt[i][j] = min(temp)#取所有情况中的最小值
            last_opt=[list(x) for x in dp_opt]#拷贝以待下次循环
        return dp_opt
    
    
    if __name__ == '__main__':
        n = int(input())
        m = int(input())
        x=input()
        map = []
        for i in range(n):
            map.append([int(x) for x in input().split()])
        res=minPath(n,m,map)
        for x in res:
            print(x)
    

    来看看测试结果:

    再来看看m=3的结果:

    再来看看n=4 的结果:

    因为道路是无向的,所以从 i 到 j 走m步的最短距离肯定和从 j 到 i 走m步的最短距离相等,所以输出一定是一个对称矩阵,如果不是对称的,一定是哪里逻辑出错了……

    如果有人搜到这篇博客,然后复制我的代码上去,可能会发现代码测试通过率为0,那是因为要求的输出是数字,但是这里输出的dp_opt是一个列表,是带方括号的,和题目要求不符,记得自己改下代码,挨个输出就行了。

    C++代码有空再写。

    嘤嘤嘤,第一次自己做出来的动态规划题,虽然测试的时候没做出来……umm当自我安慰吧。

    展开全文
  • 'res' 是一个可选正参数,用于设置跨越任意两点之间的最小成对距离和任意两点之间的最大成对距离线性间隔距离数量。 通常,请先尝试不设置“ res”,因为这样可以确保提供最高精确度答案。 如果计算时间太...
  • [xs,ys] = cint(x1,y1,x2,y2) 查找由平面中 length(x1) 点 (x1,y1) 和 length(x2) 点之间的直线定义曲线交点在平面 (x2,y2) 中。 该函数基本上解决了 x1(m) + t*diff(x1)(m) = x2(n) + s*diff(x2)(n); y1(m) +...
  • 光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一...光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。 你需要设计这样一个...

    光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?
    光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连。光明小学的每个班都有M个学生,所以你要为他们设计出一条恰好经过M条边的路径。
    光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。
    你需要设计这样一个函数:
    res[][] Solve( N, M, map[][]);
    注意:map必然是N * N的二维数组,且map[i][j] == map[j][i],map[i][i] == 0,-1e8 <= map[i][j] <= 1e8。(道路全部是无向边,无自环)2 <= N <= 100, 2 <= M <= 1e6。要求时间复杂度控制在O(N^3*log(M))。
    map数组表示了一张稠密图,其中任意两个不同节点i,j间都有一条边,边的长度为map[i][j]。N表示其中的节点数。
    你要返回的数组也必然是一个N * N的二维数组,表示从i出发走到j,经过M条边的最短路径
    你的路径中应考虑包含重复边的情况。
    样例:
    N = 3
    M = 2
    map = {
    {0, 2, 3},
    {2, 0, 1},
    {3, 1, 0}
    }

    输出结果result为:
    result = {
    {4, 4, 3},
    {4, 2, 5},
    {3, 5, 2}
    }
    样例解释:
    1->1有两种方法:1->2->1(长度为2+2=4),1->3->1(长度为3+3=6)
    2->2有两种方法:2->1->2(长度为2+2=4),2->3->2(长度为1+1=2)
    3->3有两种方法:3->1->3(长度为3+3=6),3->2->3(长度为1+1=2)
    1->2只有一个方法:1->3->2(长度为3+1=4)
    1->3只有一个方法:1->2->3(长度为2+1=3)
    2->3只有一个方法:2->1->3(长度为2+3=5)
    根据对称性可以得到其它部分的答案

    编译器版本: Python 2.7.6
    请使用标准输出(sys.stdout);已禁用图形、文件、网络、系统相关的操作,如Process , httplib , os;缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用;如果使用sys.stdin.readline,因为默认会带换行符,所以要strip(' ')进行截取;建议使用raw_input()
    时间限制: 3S (C/C++以外的语言为: 5 S)   内存限制: 128M (C/C++以外的语言为: 640 M)
    输入:
    输入范例 例如下面表示总共3个节点和:
    3    (表示N=3)
    2    (M=2)
    下面是N*N的矩阵(此处是一个3*3的矩阵)
    3 3
    0 2 3
    2 0 1
    3 1 0
    输出:
    输出是一个N*N的矩阵(此处根据输入得到是一个3*3的矩阵)
    4 4 3
    4 2 5
    3 5 2
    输入范例:
    3
    2
    3 3
    0 2 3
    2 0 1
    3 1 0
    输出范例:
    4 4 3
    4 2 5
    3 5 2

    # 分析:
    # 首先,假设从 i 到 j 经过(m-1)条边的最短距离已知,存储在last_opt[n][n]二维数组中。那么从 i 到 j 经过m条边的最短距离简化成:
    # dp_opt=min(last_opt [i] [x] + map [x] [j] )
    # 经过m条边的最短路径只和最后一步的路径以及走(m-1)步的最短路径有关,
    # map [x] [j] 表示最后一步,# last_opt [i] [x] 表示从起点 i 走m-1 步到x的最短路径。
    # 附上Python 2代码,时间复杂度 O(n^3*(m-1)),空间复杂度O(2*n^2)
    
    def minPath(n,m,map):
        last_opt=[x[:] for x in map]#初始化,前一步的最短路径
        print last_opt
        dp_opt=[x[:] for x in map]#初始化,临时的每一步的最短路径
        print dp_opt
        for step in range(m-1):#只需要循环 m-1次
            for i in range(n):
                for j in range(n):
                    temp = [last_opt[i][x] + map[x][j] for x in range(n) if map[x][j]!=0 and last_opt[i][x]!=0] #递推式转换 注意判断条件
                    print 'step',step,'i',i,'j',j,'temp',temp,'min_temp',min(temp)
                    dp_opt[i][j] = min(temp)#取所有情况中的最小值
                    for k in dp_opt:
                        print k
            last_opt=[x[:] for x in dp_opt]#拷贝以待下次循环
        print 'dp_opt',  dp_opt
        print 'last_opt',last_opt
        return dp_opt#或者last_opt也行
    if __name__ == '__main__':
        n = int(input())
        m = int(input())
        x=raw_input()
        map = []
        for i in range(n):
            map.append([int(x) for x in raw_input().split()])
        res=minPath(n,m,map)
        for x in res:
            print x

     

     

    展开全文
  • 贝塞尔曲线 多点画

    2018-01-24 14:50:00
    这里利用的是三阶贝塞尔曲线,所以需要计算出两个控制点,因为贝塞尔曲线是两点之间的连线,为了保证所有的线段是连接起来是平滑的,所以两个控制点应该取在当前点的切线上,因为切线保证了当前点的一阶导连续。...
  • 因为我们不难发现,对于个凸包来说,他们之间的最小距离肯定在对踵上。然后我们就可以去便利所有的对踵这样同时保留最小距离这样就可以了。注意求一个线段到另一条线段的最小距离应该用积去算就好了 还有...
  • unity3d 物体之间线连接效果

    千次阅读 2019-09-20 10:28:51
    Positions:线的所有点,是个数组,设置size为2就是条直线,一条直接有组成,如果要画三角形就需要3个 Width:线的宽度 我们看一下实现代码: 需要,就是需要连接的两个对象 需要一条线,...
  • 所有交换机光纤端口都是2个,分别是一发一收。当然,光纤跳线也必须是2根,否则端口之间将无法进行通讯。当交换机通过光纤端口级联时,必须将光纤跳线收发对调,当一端接“收”时,另一端接“发”。同理,...
  • 计算个经纬度距离 纬度线投射在图上看似水平平行线,但实际上是不同半径圆。有相同特定纬度的所有位置都在同一个纬线上。赤道纬度为0°,将行星平分为南半球和北半球。纬度是指某与地球球心连线...
  • 平面上有 n 个点,点位置用整数坐标表示 points[i] = [xi, yi]。...解:由于每秒可以走一次对角线,一步总时间相当于两点之间横坐标只差和纵坐标只差最大值: class Solution { public: int minTimeToVisi
  • 测地线是地球上(椭球或椭球)之间的最短路径。 创建形状会处理一个矢量层,以根据表中字段和参数创建椭圆,方位线,楔形,甜甜圈,弧形楔,多边形,星形,椭圆形玫瑰,次曲面,多箔,附类,径向线和...
  • 分析可得: 两点之间的访问最小时间即为两点间x坐标差或y坐标差绝对值最大值 解题代码 def minTimeToVisitAllPoints(self, points: List[List[int]]) -> int: max_size = 0 for i in range(len
  • 目的是确定两点之间的距离最远。 解决该问题一种明显但效率不高方法是扫描每个点并计算其与集合中每个其他点距离。 这将以O(n ^ 2)效率运行。 解决该问题一种更有效方法是形成一个凸包,并使用一种...
  • 因此我们可以将所有到达端点时间点进行离散化,那么在相邻的两个时间点之间只狗一定分别在某条线段上移动,因此可以利用参数方程得到具体坐标与时间关系。而针对这一时间段,我们只需要将端点带入便可...
  • 题目实际上是想求相邻两点之间的最短距离,由于只能沿水平、对角线或者竖直方向移动一个单位长度,所以两点间最短距离实际上是两坐标差最大值,即max(x1-x2,y1-y2)。 class Solution { public int ...
  • 首先实现效果是,节点上下左右四个中点(锚点),所有到节点连线都会在这四个上,个节点之间的连线按照最短一条来画线。   确定了需要实现效果,接下来就是实现。给Node类提供得到四个锚点方法...
  • 我们在N $$ \ mathcal {N} $$ = 8超重力下计算环五振幅符号。 我们为振幅写了一个ansatz,其合理前置因子不仅基于4维领先奇点,而且还基于d维奇,因为前者不足。 我们新颖基于d维统一性方法来振幅...
  • Java 中的经纬度(球体)的距离换算,坐标点之间距离换算采用的为下面代码。和一些其他方法比较起来比较精确,因为网上所有的经纬度距离换算都不一样,但都能和主流的算法在几千KM的距离上只有几百米的差距。而且...
  • 表达式中,所有的字符串都是以 ”y=” 开始的 ,在之后的字符串中只含有x ,+ , - , 0~9 这些字符,不含有空格。无非法表达式输入。 特别的: 当x 的指数为1时,省略指数, 例如: y = 2x^1 应表示为 y = 2x 当...
  • 计算方位角和距离时要考虑,这是地球上两点之间的最短路径。 箭头指示直线大圆距离真正中点,而不是其光学中间点,该中间点因投影而有所不同,尤其是在高纬度地区。 要完成绘制线条,只需双击,或单击最后一...
  • 纬度是指某与地球球心连线和地球赤道面所成线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。纬度数值在0至30度之间的地区...
  • 例如,如果要把所有的管、线、缆全部管理起来,甚至同一条管、线、缆根据所处的地域不同还要分为好多段来管理,整体上必然是一个巨大的数据量。但是,单条记录占用空间并不大,他们的位置(经纬度坐标)却还是相对...
  • 此功能旨在用于手动平滑分散的线(当所有其他“平滑”功能失败时)。 这个想法是定义一个代表原始线的样条曲线。 样条线的边缘通过在轴中单击来添加,并用“o”标记以图形方式表示。 通过在现有边缘上单击并拖动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 810
精华内容 324
关键字:

两点之间所有的线