如何在浮点数数组中创建一个由 1 组成的圆圈

Posted

技术标签:

【中文标题】如何在浮点数数组中创建一个由 1 组成的圆圈【英文标题】:How to create an circle of 1s in an array of floats 【发布时间】:2021-12-27 03:12:09 【问题描述】:

问题

我需要使用浮点数组创建一个圆形轮廓。

函数 CircleOutline(int res, int r1, int r2) 完成了我想要的。 它创建一个 float 数组,其中未填充的圆圈(圆圈轮廓)为 1。其他都是 0。

但是,我只需要一组 xy for loops 这部分 if ((c - x) * (c - x) + (c - y) * (c - y) < r1_2) 填充了圆周内的所有内容。 我认为,但不确定,我需要与此相反(填充外部)。

概念

这是我认为可行的伪代码:

if (current index is inside circumferenceA) 
   if (current index is outside circumferenceB)
        map.add(1);

圆形轮廓浮点数组

static float [] CircleOutline(int res, int r1, int r2)

    float [] map = new float[res * res];
    float c = res / 2;
    float r1_2 = r1 * r1;
    for (int x = 0; x < res; x++) 
    
        for (int y = 0; y < res; y++) 
        
            if ((c - x) * (c - x) + (c - y) * (c - y) < r1_2)
            
                map[x + y * res] = 1f;                    
            
        
    
    float r2_2 = r2 * r2;
    for (int x = 0; x < res; x++) 
    
        for (int y = 0; y < res; y++) 
        
            if ((c - x) * (c - x) + (c - y) * (c - y) < r2_2)
            
                map[x + y * res] = 0f;                      
            
        
    
    
    return map;

【问题讨论】:

【参考方案1】:

因为没有专门针对使用浮点数组的轮廓的答案,并且因为我刚刚弄清楚了,所以我将发布我的答案:

float [] map = new float[res * res];
float c = res / 2;
float r1_2 = r1 * r1;
for (int x = 0; x < res; x++) 

    for (int y = 0; y < res; y++) 
    
        if ((c - x) * (c - x) + (c - y) * (c - y) < r1_2)
        
            if ((c - x) * (c - x) + (c - y) * (c - y) > r2_2)
            
                map[x + y * res] = 1f; 
                       
        
    

我写了pseduo代码后才知道。

【讨论】:

但是,我只需要一个 for 循环就可以做到这一点 - 但是.. 解决方案使用两个 for 循环? 更新了问题以反映错误。 1 表示 x 长度分辨率,1 表示 y 长度分辨率。我的团队负责人在长度分辨率 x 分辨率下使用 1,然后在内部创建和 xy 变量,这样他就可以使用 i 轻松地将像素传递到浮动地图中。他更喜欢使用一个循环,所以他在下达指令时总是将其称为一个循环。我忘了翻译成现实世界的术语。我需要它使用 2 个循环而不是 4 个。

以上是关于如何在浮点数数组中创建一个由 1 组成的圆圈的主要内容,如果未能解决你的问题,请参考以下文章

IEEE754浮点数表示法中阶码的范围是多少?

python中浮点数的最小值

如何在 C++ 中检查用户输入

java浮点数常量是啥

在 python 中创建 32 位浮点 wav 文件?

汇编浮点指令