- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一些背景:
所以我的计划是用 C++ 创建一个点画算法,我基本上只是计划为圆的每个半径存储一大堆数据,以便写入 OpenGL 中的纹理贴图上,我不确定这是否正确有件事要做,但我喜欢这样做
比计算机动态计算每个圆的半径更快,特别是如果很多圆的大小相同,我的计划是创建一个函数,只编写一个充满半径的整个文本文档,达到一定的大小,这数据将按位存储在 long 的 std::array <long> bit = {0x21, 0x0A ect... }
数组中这样我就可以用分配给每个像素的抗锯齿值的 2 位对 4X4 值数组进行编码,但是要创建这个 Ant 锯齿圆数据库,我需要编写一个我一直出错的函数;
实际问题:
所以这可能看起来很懒,但我可以保证我已经尝试了一切来解决我在这里犯的错误基本上我已经通过将像素划分为子像素将这段代码编写为 anti=alias 但它似乎是返回大于 1 的值,这是不可能的,因为我已将每个像素分为 100 个大小为 0.01 的像素float CircleConst::PixelAA(int I, int J)
{
float aaValue = 0;
for (float i = (float) I; i < I + 1; i += 0.1f)
{
for (float j = (float) J; j < J + 1; j += 0.1f)
{
if ((pow((i - center), 2) + pow((j - center), 2) < pow(rad, 2)))
aaValue += 0.01f;
}
}
return aaValue;
}
这也是编写实际圆的代码
CircleConst::CircleConst(float Rad)
{
rad = Rad;
dataSize = (unsigned int) ceil(2 * rad);
center = (float) dataSize/2;
arrData.reserve((int) pow(dataSize, 2));
for (int i = 0; i < dataSize; i++)
{
for (int j = 0; j < dataSize; j++)
{
if ( CircleBounds(i, j, rad-1) )
arrData.push_back(1);
else if (!CircleBounds(i, j, rad - 1) && CircleBounds(i, j, rad + 1))
{
arrData.push_back(PixelAA(i,j));
}
else
arrData.push_back(0);
}
}
}
所以我注意到,在没有抗锯齿的情况下,圆圈的书写方式被移动了一行,但这可以通过将圆圈中心的值更改为 dataSize/2 - 0.5f
来解决。但这会导致稍后当圆与抗锯齿不对称时出现问题,这里是半径 3.5 的示例
0.4 1.0 1.1 1.1 1.1 0.4 0.0
1.0 1.0 1.0 1.0 1.0 1.1 0.2
1.1 1.0 1.0 1.0 1.0 1.0 0.5
1.1 1.0 1.0 1.0 1.0 1.0 0.5
1.1 1.0 1.0 1.0 1.0 1.0 0.2
0.4 1.1 1.0 1.0 1.0 0.5 0.0
0.0 0.2 0.5 0.5 0.2 0.0 0.0
正如你所看到的,有些值超过 1.0,这是不可能的,我确信有一个明显的答案可以解释为什么会这样,但我完全错过了它。
最佳答案
问题出在这样的行上:
for (float i = (float) I; i < I + 1; i += 0.1f)
float 无法以无限精度存储或操作。通过重复将一个 float 与另一个 float 相加,误差会累积。这就是您看到的值高于 1.0 的原因。
解决方案是使用整数类型进行迭代并计算所需的 float 。例如:
for (unsigned i = 0U; i < 10U; ++i)
{
float x = 0.1F * static_cast<float>(i);
printf("%f\n", x);
}
关于c++ - 为什么我的 C++ 圆抗锯齿算法会给出不对称的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68793408/
我有一个默认的表 white-space : normal想申请white-space: nowrap对于链接到特定 th 的所有 td 元素,但不必将其应用于 元素本身,而不是使用外部 css 文件
我在一篇有关 Version Insight ( http://www.delphifeeds.com/go/s/77066 ) 的博客中读到(除其他外)JCL 没有受版本控制的 .dproj 文件,
我正在打开一个弹出窗口,并希望在其中执行单击操作,从而在打开它的页面中执行一些 jQuery。我在网上找到的所有内容都表明我应该能够使用 window.opener 做到这一点(例如 JQuery -
tablesorter 不适用于主题列,当列包含“-”时,例如: Name Subject Anton - Max "dfdsrv" Anna "fdsf" 但如果我添加带有规范符
我从 web 服务中获取了如下顺序的数据 234,00234,000,00 但是…… 如果 xml 更改为 NSMutableDictionary,它会转到排序顺序。 "Resultat_detail
我想在不执行循环的情况下从 pandas 列的值中提取第一个 3。 所以, df['myCol'][3] 5475 为了提取前 3 位数字,我这样做: int(str(df['myCol'][3])[
我一直读到python有严格的类型检查- >>> 1 + 'hello' Traceback (most recent call last): File "", line 1, in TypeE
在 MySQL 查询中,例如 SELECT * FROM ( SELECT user_id FROM favorites WHERE user_id >1 UNION SELECT user_id F
我有一个 UIScrollView,里面有一些标签。我可以使用按钮将 ScrollView 移动到另一个“页面”。但是当我推得太快时,偏移量不正确。 我将 ScrollView 移动到下一页的代码:
我正在尝试设置 SonarQube在成功构建 Travis 后评论我的 GitHub 拉取请求。 我已经有正常的分析工作。对于拉取请求分析,我还准备了所有 token ,安装了插件等。拉取请求中的问题
这里有一些代码。同样的模式(afaik)适用于英雄教程。 login.component.html: Invalid credentials login.component
我很困惑。我见过一些类似的问题,但没有一个能解决我的问题;所以我在网上抓取了这个脚本,它通过运行 makefile 自动压缩 javascript 文件,如下所示: concatenated.min.
我们在 url 参数中需要一个编码的分号字符,但 angular 不编码这个字符。 我们使用的资源如下所示: app.factory('TestResource', ['$resource', fun
我对 Hibernate 有一个奇怪的问题。我可以从数据库中选择一些东西,但我不能插入或更新任何值。这是我的配置和示例代码,persistance.xml: ****Us
类似于这个问题:group by not-null values我试图只对列 groupID 不为空的记录进行分组: +--+-------+------+-----+-----+----------
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: how to not apply opacity for child element? 哪个是设置不透明度的
我在我正在构建的 C++ 应用程序中使用 libtorrent,下载工作完美,但我想在尝试开始下载之前询问跟踪器它已连接的种子和对等点的数量。 我尝试使用 scrape_tracker(),但我从未收
我……很困惑。事情是这样的。我有一个编码为 UNICODE (Little Endian) 的 *ini 文件。在我的 Visual Studio 项目(我自己的 ini 解析器)中,我正在检查文本文
当我将 Linq-to-sql 查询绑定(bind)到 datagridview(在两者之间使用 BindingSource)时,列默认是可排序的。但是, bool 类型似乎并非如此。对于这些数据 G
当我将 iPhone 图像上传到我的 Wordpress 网站时,用 iPhone 拍摄的图像旋转错误。在我的电脑上旋转是正确的,但上传时旋转出错了。 有什么想法吗? 更新:Wordpress UI
我是一名优秀的程序员,十分优秀!